排除列在Entity Framework 4.1 Code First中可更新

时间:2011-05-24 18:56:26

标签: ef-code-first entity-framework-4.1

有没有人知道我们是否可以排除在Entity Framework 4.1 Code First中更新列?例如,我有'CreatedOn'字段,我不希望在进行编辑/更新时包含该字段。这是否可行,即在EF Code First 4.1中选择性地排除更新操作中的字段?

1 个答案:

答案 0 :(得分:15)

如果您正在使用附加实体,则EF将仅为已更改的字段生成更新。如果您正在使用分离的实体,则必须手动说出已更改的EF。如果你这样称呼:

context.Entry(yourEntity).State = EntityState.Modified;

你说的是EF应该修改所有属性。但如果你改为这样称呼:

context.Entry(youreEntity).Property(e => e.SomeProperty).IsModified = true;

你会说只修改了SomeProperty(只有这个属性会在更新中)。我不确定你是否可以通过将整个实体标记为已修改并选择不应修改的属性来执行相反的操作,但您可以自己测试它。

如果数据库中填写了CreatedOn,您可以将其标记为DatabaseGeneratedOption.Identity,并且您的应用程序永远不会修改它。