【问题标题】:SaveChanges() overheadSaveChanges() 开销
【发布时间】:2017-05-31 08:25:13
【问题描述】:

在调用DbContext.SaveChanges() 时,检查是否有任何需要保存的更改对性能有好处吗?例如:

if (context.ChangeTracker.HasChanges())
    context.SaveChanges()

或者这是 EF 在调用 SaveChanges() 时在内部执行的那种检查?

【问题讨论】:

    标签: entity-framework entity-framework-6


    【解决方案1】:

    在内部,EF 会检查以确定是否进行了更改,如果没有更改,它将不会提交任何内容(因此不会浪费资源)。

    【讨论】:

      【解决方案2】:

      希望对你有帮助

      Stopwatch sw = new Stopwatch();
      Stopwatch sw2 = new Stopwatch();
      
      sw.Start();
          var b = db.ChangeTracker.HasChanges();
      sw.Stop();
      
      sw2.Start();
          var c = db.SaveChanges();
      sw2.Stop();
      
      
      
      Console.WriteLine("Elapsed(HasChanges)={0}", sw.Elapsed); //takes 0.0000889 miliseconds
      Console.WriteLine("Elapsed(SaveChanges)={0}", sw2.Elapsed); // takes 0.0003563 miliseconds
      Console.ReadLine();

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
      猜你喜欢
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2014-02-07
      • 2018-10-03
      • 2016-04-22
      • 2018-12-07
      相关资源
      最近更新 更多