我正在尝试找到一种方法来确定对数据库上下文 (DbContext) 所做的任何更改。注意:我在 Windows 7 64 位机器上使用带有实体框架 5 的 Visual Studio 2012。
当我过去使用 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”,即使我知道上下文已更改。有人对我做错了什么有任何想法吗?