【发布时间】:2015-07-01 19:51:12
【问题描述】:
尝试使用实体框架(版本 6.1.3)删除实体的字段时遇到问题。
假设我有两个实体:Person 和 Work。
我可以毫无问题地改变一个人的工作,但是当我试图表达这个人失业时,它就不能正常工作:
person.Work = null;
db.SaveChanges();
运行此代码后,该人仍然会有以前的工作,但如果我使用调试器并在运行前检查 person 的 Work 属性
person.Work = null;,一切都会按预期运行。
谁能解释一下为什么先读取值会使代码正常工作以及如何正确删除该字段?
var work = person.Work; \\ with this line here everything works as expected
person.Work = null;
db.SaveChanges();
【问题讨论】:
-
我会说这不是完全相同的问题,但stackoverflow.com/questions/22557699/… 的回答肯定会有所帮助。我现在正在做
db.Entry(person).Reference(x => x.Work ).CurrentValue = null;,这就像一个魅力。 -
请参阅下面的答案。您的问题是 EF 无法识别您已更改此人的 Work 属性。通常(总是)是因为 EF 无法为 person 构建代理,因为您没有将属性 Work 标记为 virtual。
标签: entity-framework entity-framework-6