调用DbContext.SaveChanges()
时,检查是否有任何更改需要保存,是否有任何性能优势?例如:
if (context.ChangeTracker.HasChanges())
context.SaveChanges()
或者,这是在调用SaveChanges()
时EF在内部执行的检查吗?
答案 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();