为什么EF SaveChanges
将在单独的查询中插入/删除每条记录?
假设此代码:
using (var db = new AppEntities())
{
using (var transaction = db.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
try
{
db.Table1.AddRange(list);
db.Table2.RemoveRange(list);
}
db.SaveChanges();
transaction.Commit();
}
}
我使用SQL Server Profiler检查这些行,并且令人惊讶的是每条记录有一个INSERT INTO
!更糟糕的是,同样的删除!对于100行,这不是一个严重的问题。但是5000行需要2分钟!
是否可能告诉EF, PLEASE 以下列方式执行此操作:
INSERT INTO TABLE1 VALUES (),(),(),();