将null值赋给其引用时,子实体不会更新

时间:2011-08-31 11:09:18

标签: entity-framework entity-framework-4

我有一个名为:应用程序的实体,它有字段 ApplicationStatus ,它也是实体,ApplicationStatus值是yes或no,它在Application中可以为空。

所以当我执行时:

Application application = MyEntities.Applications.First();
application.ApplicationStatus = null; 
MyEntities.SaveChanges(); 

ApplicationStatus不会更新其值,除非我调试它并快速监视application.ApplicationStatus。

然而

application.ApplicationStatusId = null;

工作正常。

我的问题,为什么这个不起作用:

application.ApplicationStatus = null;

由于

编辑 进一步提问:

由于@LadislavMrnka答案解决了调试行为以及与延迟加载相关的问题:

我们如何解释这些情况?

Application application = MyEntities.Applications.First();

application.ApplicationStatusId = null; //This updates value in db

ApplicationStatus applicationStatus = MyEntities.ApplicationStatuses.First(a => a.Name == "no");
app.ApplicationStatus = applicationStatus; //This updates value in db too

app.ApplicationStatus = null; // But this doesn't

1 个答案:

答案 0 :(得分:2)

使用它,它将起作用:

Application application = MyEntities.Applications.Include("ApplicationStatus").First();

原因是您的ApplicationStatus从未加载过。如果你进行调试并访问它,你的调试访问将触发延迟加载并加载它。