实体框架:检查是否有从特定实体保存的更改

时间:2011-05-16 15:54:11

标签: c# entity-framework

我想在保存之前检测是否对特定实体集进行了更改。

我目前正在使用此方法,但如果在上下文中修改了任何实体,则返回true。

const EntityState ModifiedID = EntityState.Modified
                             | EntityState.Added
                             | EntityState.Deleted;

var objectStateEntries = Database.LabelTAB
                          .Context.ObjectStateManager
                          .GetObjectStateEntries(ModifiedID);

return objectStateEntries.Any();

有没有办法检测LabelTAB实体中是否有某些未保存的条目,而不是整个Context

谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个:

var objectStateEntries = Database.LabelTAB
                                 .Context
                                 .ObjectStateManager
                                 .GetObjectStateEntries(ModifiedID)
                                 .Where(e => e.Entity is LabelTAB);

return objectStateEntries.Any();

答案 1 :(得分:0)

使用:

var states  = new List<EntityState>() {  EntityState.Modified,
                                         EntityState.Added,
                                         EntityState.Deleted};

var query = from t in Database.LabelTAB
            where states.Contains(t.EntityState);

每个实体都有EntityState属性。您可以只使用实体上的属性,而不是查询ObjectContext。