EF6 - 添加新的关联子项不填充导航属性

时间:2016-02-25 15:00:30

标签: entity-framework

我有以下代码将成员添加到父组。我遇到的问题是添加到PCSGroupMembers集合的LAST成员不会按需加载它的导航属性。我有一套3我尝试添加各种订单...前2个总是有效,最后一个不能加载导航属性。

在下面的情况中,您将看到总共6个成员。最后3个是我刚刚在这个请求中添加的是相同的IDS作为前3个(唯一的键是groupid,memberid,startdate),所以我肯定不知道"坏FK"或类似的。前两个新成员正在构建他们的导航属性,但最后一个永远不会。如果我添加2,3,4等等并不重要。最后一个永远不会填充。

对我来说真的很奇怪的是PcsGroupID在最后一个上是一个空的Guid,即使它已经通过下面的代码中的group.PcsGroupMembers.add(pcsMember)添加到了组中。

编辑:如果您看到标有 Hack 的块,则真正的最终成员现在拥有它的导航属性。然后从集合(和上下文)中删除伪造的临时成员,一切都神奇地起作用。所以.... WAT?

添加新成员的代码

//expire all existing members ([0..2] in this example)
group.PCSGroupMembers
  .Where(m => m.EndDate == null)
  .ToList().ForEach(m => {
    m.EndDate = DateTime.Now.Date;
  });

//add new members from request ([3..5] in this example)
foreach (PcsGroupMemberAddViewModel member in requestViewModel.Members) {
  PCSGroupMember pcsMember = db.PCSGroupMembers.Create();
  pcsMember.PCSSplitID = Guid.NewGuid();
  pcsMember.ProjectProtocolID = member.ProjectProtocolID;
  pcsMember.SplitAmount = member.Split;
  pcsMember.IsPrimary = member.IsPrimary;
  pcsMember.StartDate = DateTime.Now.Date;

  group.PCSGroupMembers.Add(pcsMember);
} 

倒数第二(索引4) Associations populating

最后一个孩子(索引5) associations not populating

哈克

var tempmember = db.PCSGroupMembers.Create();
//this Add seems to trigger the previous 'real' item to load it's Nav properties.... ???
group.PCSGroupMembers.Add(tempmember); 
group.PCSGroupMembers.Remove(tempmember); //remove from collection
db.PCSGroupMembers.Remove(tempmember); //remove from context

0 个答案:

没有答案