zoukankan      html  css  js  c++  java
  • EF6 如何判断DataContext有修改,以及如何放弃修改

    如何判断DataContext有修改:

    EF6的

    using (var db = new Model1())
    {
        if (db.ChangeTracker.HasChanges())
        {
            Console.WriteLine("Something has changed");
        }
    }

    EF5中:

    public bool HasUnsavedChanges()
     {
        return this.ChangeTracker.Entries().Any(e => e.State == EntityState.Added
                                                  || e.State == EntityState.Modified
                                                  || e.State == EntityState.Deleted);
     }

    EF4中为:

    public Boolean HasUnsavedChanges()
        {
            return (this.ObjectContext().ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).Any());
        }

    DataContext如何放弃修改的建议:

    this is not supposed way to use context. Context is unit of work - do changes you really want to do and then save them. If you find that you don't want to save changes dispose the context and create a new one. The best practice is using context for one single logical operation. Sharing context or using static context is a bad practice and because of that there is no build in method to "reset" context - you must do it yourselves by exploring ObjectStateManager and reverting all changes (it can be quite complex task).

    参考

    Entity Framework 5 - DbContext Has Changes

    Entity Framework 6.1 is context dirty

  • 相关阅读:
    2018.8.5 复习笔记
    C#抽象类与接口的区别【转】
    double转整数问题
    C++学习笔记
    BCG使用
    C++设计模式之工厂方法模式
    静态成员函数
    CTreeCtrl 控件使用总结
    WinAPI: ShellExecute
    C++ STL map使用
  • 原文地址:https://www.cnblogs.com/HQFZ/p/4159100.html
Copyright © 2011-2022 走看看