[一切都被剥离以突出问题]
SchemeRequest
------------------------------
Id
SchemeId [FK to Schemes Table]
------------------------------
using(var scope = new TransactionScope())
{
var request = new SchemeRequest { SchemeId = [schemeId] };
this.dbContext.SchemeRequests.Add(request);
this.dbContext.SaveChanges();
this.mailer.SendMail(request); // request.Scheme is null when it should not be
scope.Complete();
}
我首先使用EF模型。现在调用SaveChanges后,SchemeRequest中的Navigation属性Scheme为null。我不知道为什么。有人可以帮忙吗?还有另一个导航属性似乎工作正常。我如何调试这个,即如何找出幕后发生的事情。?
我检查并仔细检查了关系,属性等,但一切似乎都没问题。
答案 0 :(得分:1)
预计不会加载导航属性。您只保存新的权利而不设置其导航属性。保存父级时,EF不会自动加载其他实体。
但是,导航属性将在两种情况下设置:
您在新Scheme
中设置SchemeId
的{{1}}已加载并附加到上下文。 EF会自动修复关系并设置导航属性。
如果您使用延迟加载,则在您访问后立即设置SchemeRequest
后,将加载导航属性。但是,您需要将新的SchemeId
创建为延迟加载代理,而不是使用SchemeRequest
:
new