如何使用实体框架代码优先防止对象持久化

本文关键字:对象 持久化 何使用 实体 框架 代码 | 更新日期: 2023-09-27 18:19:16

我有一个对象模型,我使用EF 4.2持久化到SQL Compact数据库。我的一个类有一个用于确定对象是否被修改的标志。如果对象从未从其默认值更改,我不希望将其保存到数据库中。是否有一种方法,我可以配置DbModelBuilder抛出基于此属性的对象(它是一个bool)?我正在考虑的另一个选项是覆盖DbContext.SaveChanges,如果对象未被修改,则从DbSet中删除对象。建议吗?

如何使用实体框架代码优先防止对象持久化

如果附加的对象没有被修改,它将不会被保存到数据库。DbContext有自己的变化跟踪机制,它不会使用您的自定义属性。

为什么不将其添加到您的业务逻辑中呢?我的意思是,为什么英孚要处理这个问题?它可以像这样简单:

if myObj.WasModified
    context.SaveChanges()
else
    do nothing

更不用说如果对象没有被修改EF将不会做任何事情