实体框架模型第一:导航属性未更新

时间:2012-04-30 12:59:12

标签: entity-framework entity-framework-4

[一切都被剥离以突出问题]

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。我不知道为什么。有人可以帮忙吗?还有另一个导航属性似乎工作正常。我如何调试这个,即如何找出幕后发生的事情。?

我检查并仔细检查了关系,属性等,但一切似乎都没问题。

1 个答案:

答案 0 :(得分:1)

预计不会加载导航属性。您只保存新的权利而不设置其导航属性。保存父级时,EF不会自动加载其他实体。

但是,导航属性将在两种情况下设置:

  • 您在新Scheme中设置SchemeId的{​​{1}}已加载并附加到上下文。 EF会自动修复关系并设置导航属性。

  • 如果您使用延迟加载,则在您访问后立即设置SchemeRequest后,将加载导航属性。但是,您需要将新的SchemeId创建为延迟加载代理,而不是使用SchemeRequest

    new