Entity framework: проверьте, есть ли изменения, которые нужно сохранить из определенного объекта

#c# #entity-framework

#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 ?

Спасибо.

Ответ №1:

Попробуйте это:

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

return objectStateEntries.Any();
  

Ответ №2:

Используйте:

 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 вы можете просто использовать свойство объекта.