在EF 4.1中,是否可以使用存根实体将字段设置为null?

时间:2013-04-29 16:14:00

标签: c# entity-framework

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

1 个答案:

答案 0 :(得分:3)

您正在设置一个空字段(因为您刚刚创建了一个全新的空白实体),然后为其指定了null,因此没有任何更改。

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

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

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