是否可以使用存根实体在EF中将字段设置为空?
我希望我的代码能够像这样工作:
MyEntity myEntity = new MyEntity() { ID = detached.ID };
ctx.MyEntities.Attach(myEntity);
// The value in the table is non null, the value in detached is null.
myEntity.myNullableField = detached.myNullableField;
ctx.SaveChanges();
我目前看到的是,如果我在myEntity存根对象中将字段设置为null,则EF会将其检测为无更改,并且不会更新数据库中的该列。是否有某种方法可以强制EF将null检测为更改,以便将其保存到数据库中?
答案 0 :(得分:3)
您正在设置一个空字段(因为您刚刚创建了一个全新的空白实体),然后为其指定了null,因此没有任何更改。
如果您执行以下操作,则可以将属性标记为已修改:
ctx.Entry(myEntity).Property(e => e.myNullableField).IsModified = true;
不幸的是,感觉有点像黑客。