我有一个名为:应用程序的实体,它有字段 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
答案 0 :(得分:2)
使用它,它将起作用:
Application application = MyEntities.Applications.Include("ApplicationStatus").First();
原因是您的ApplicationStatus
从未加载过。如果你进行调试并访问它,你的调试访问将触发延迟加载并加载它。