检查是否有任何未决的更改要保存
有没有办法find在entity framework中是否存在未保存的更改?
这可能工作(如果通过更改,你的意思是添加,删除和修改的实体):
 bool changesMade = (context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Count() + context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted).Count() + context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified).Count() ) > 0; 
编辑:
改进的代码:
 bool changesMade = context. ObjectStateManager. GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified ).Any(); 
 从EF 6开始,有context.ChangeTracker.HasChanges() 。 
对于那些使用EF 4+的人来说,这是一个等效的解决scheme作为扩展方法:
 public static class DbContextExtensions { public static Boolean HasPendingChanges(this DbContext context) { return context.ChangeTracker.Entries() .Any(e => e.State == EntityState.Added || e.State == EntityState.Deleted || e.State == EntityState.Modified); } } 
 请注意,您不能将这些值组合为位掩码。 函数GetObjectStateEntries()为你处理逻辑,但LINQ不会产生正确的结果。