SaveChanges()开销

时间:2017-05-31 08:25:13

标签: entity-framework entity-framework-6

调用DbContext.SaveChanges()时,检查是否有任何更改需要保存,是否有任何性能优势?例如:

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我希望这会有所帮助

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();