如何使用Entity Framework Code First阻止对象持久化?

时间:2012-01-03 19:34:49

标签: c# .net entity-framework sql-server-ce

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

2 个答案:

答案 0 :(得分:2)

如果未修改附加对象,则不会将其保存到数据库。 DbContext有自己的更改跟踪机制,不会使用您的自定义属性。

答案 1 :(得分:0)

为什么不将它添加到您的业务逻辑中?我的意思是,EF为什么要处理这个?它可以很简单:

if myObj.WasModified
    context.SaveChanges()

else
    do nothing

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