Entity framework EF6-添加未填充导航属性的新关联子级

Entity framework EF6-添加未填充导航属性的新关联子级,entity-framework,Entity Framework,我有以下代码将成员添加到父组。我遇到的问题是,添加到PCSGroupMembers集合的最后一个成员不会按需加载其导航属性。我有一套3个,我试着加入不同的顺序。。。前两个始终有效,最后一个不会加载导航属性 在下面的例子中,您将看到总共6个成员。最后3个是我刚才在这个请求中添加的,它们的ID与前3个相同(唯一键是groupid、memberid、startdate),因此我确信“坏FK”或类似的问题不会出现。前两名新成员正在建设他们的导航资产,但最后一名成员从未这样做。无论我是否添加2、3、4等,

我有以下代码将成员添加到父组。我遇到的问题是,添加到PCSGroupMembers集合的最后一个成员不会按需加载其导航属性。我有一套3个,我试着加入不同的顺序。。。前两个始终有效,最后一个不会加载导航属性

在下面的例子中,您将看到总共6个成员。最后3个是我刚才在这个请求中添加的,它们的ID与前3个相同(唯一键是groupid、memberid、startdate),因此我确信“坏FK”或类似的问题不会出现。前两名新成员正在建设他们的导航资产,但最后一名成员从未这样做。无论我是否添加2、3、4等,最后一个都不会填充

我觉得奇怪的是,
PcsGroupID
是最后一个Guid上的空Guid,尽管它是通过下面代码中的
group.PcsGroupMembers.add(pcsMember)
添加到组中的

编辑:但是,如果看到标记为Hack的块,则真正的最终成员现在具有其Nav属性。然后从集合(和上下文)中删除伪造的临时成员,一切都会神奇地工作。那么……什么

添加新成员的代码

//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)

最后一个孩子(索引5)

黑客

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

也许是代理剥皮?类似的问题(也是老问题):是的,我可以找到一些关于EF4.x的参考文献,其中有这样的问题,但这些似乎都不能解释发生了什么。我在上面添加了一个“Hack”,它解决了我的问题,但并没有真正解释EF的封面下到底发生了什么。似乎是一个可能的错误,但我对EF还是那么陌生,我可能只是太傻了。