Я пытаюсь найти способ определить любые изменения, внесенные в контекст базы данных (DbContext ). Примечание :Я использую Visual Studio 2012 с Entity Framework 5 на Windows 7, 64 -bit box.
Раньше, когда я использовал ObjectContext вместо DbContext, я мог сделать что-то вроде:
public partial class MyObjectContext
{
public Boolean HasUnsavedChanges()
{
return (this.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).Any());
}
}
Теперь, когда я использую DbContext, я попытался сделать это:
public partial class MyDbContext
{
public ObjectContext ObjectContext()
{
return (this as IObjectContextAdapter).ObjectContext;
}
public Boolean HasUnsavedChanges()
{
return (this.ObjectContext().ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).Any());
}
}
Проблема, с которой я столкнулся, заключается в том, что метод «HasUnsavedChanges ()» всегда возвращает «false», даже если я точно знаю, что контекст был изменен. У кого-нибудь есть идеи относительно того, что я делаю неправильно?