How to tell if any entities in context are dirty with .Net Entity Framework 4.0

后端 未结 4 970
感情败类
感情败类 2020-12-14 18:07

I want to be able to tell if there is any unsaved data in an entity framework context. I have figured out how to use the ObjectStateManager to check the states of existing e

4条回答
  •  我在风中等你
    2020-12-14 18:17

    A simple way to get a reusable single method/property you could add a new method to your ObjectContext by creating a partial class and adding a property like this:

    public partial class MyEntityContext
    {
      public bool IsContextDirty
      {
        get
        {
          var items = ObjectStateManager.GetObjectStateEntries(EntityState.Added);
          if(items.Any())
            return true;
          items = ObjectStateManager.GetObjectStateEntries(EntityState.Deleted);
          if (items.Any())
            return true;
          items = ObjectStateManager.GetObjectStateEntries(EntityState.Modified);
          if(items.Any())
            return true;
          return false;
        }
      }
    }
    

    Depending on what your looking for you could expose other properties to know if there are just deletes or modifications. This method could be simplified, but I wanted it to be clear what you would need to do.

提交回复
热议问题