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

发布于 2024-11-09 12:05:48 字数 139 浏览 0 评论 0原文

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

Does anyone know if we can exclude column from being updated in Entity Framework 4.1 Code First? For example I have 'CreatedOn' field that I don't want to included when doing edit/updates. Is this possible, i.e. selectively excluding field from update operation in EF Code First 4.1?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟酒忠诚 2024-11-16 12:05:48

如果您正在使用附加实体,则 EF 将仅为已更改的字段生成更新。如果您正在使用分离的实体,则必须手动告诉 EF 发生了什么变化。如果您这样称呼:

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

您是在说 EF 所有属性都应该修改。但如果您改为这样调用:

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

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

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

If you are working with attached entities you EF will generate updates only for fields which have changed. If you are working with detached entities you must manually say EF what has changed. If you call this:

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

you are saying EF that all properties should by modified. But if you instead call this:

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

you will say that only SomeProperty is modified (only this property will be in update). I'm not sure if you can do the reverse operation by marking the whole entity as modified and select properties which should not be modified but you can test it yourselves.

If your CreatedOn is filled in the database you can mark it as DatabaseGeneratedOption.Identity and it will be never modified by your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文