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