0

是否可以使用存根实体在 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 检测为更改,以便将其保存到数据库中?

4

1 回答 1

3

您正在设置一个为 null 的字段(因为您刚刚创建了一个全新的空白实体),然后将 null 分配给它,所以没有任何变化。

如果您执行以下操作,您可以将属性标记为已修改:

 ctx.Entry(myEntity).Property(e => e.myNullableField).IsModified = true;

不幸的是,感觉有点像黑客。

于 2013-04-29T16:18:45.170 回答