C# EF SaveChanges运行太慢
我正在尝试使用EF6MVC插入大约2000-5000条记录,其中包含60个字段 这是我的代码:C# EF SaveChanges运行太慢,c#,sql-server,entity-framework,entity-framework-6,sql-insert,C#,Sql Server,Entity Framework,Entity Framework 6,Sql Insert,我正在尝试使用EF6MVC插入大约2000-5000条记录,其中包含60个字段 这是我的代码: using (var db = new MyEntities()) { using (var transaction = db.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { db.Database.CommandTimeout
using (var db = new MyEntities())
{
using (var transaction = db.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
try
{
db.Database.CommandTimeout = 180;
// ToInsertStatement is an ExtensionMethod
// which generates a sql INSERT statement from list of entities
// in *N* batch size.
// INSERT INTO tbl values(),()*N*(); INSERT INTO...
db.Database.ExecuteSqlCommand(entitiesList.ToInsertStatement(20));
// Some other changes
db.SaveChanges();
transaction.Commit();
}
catch (Exception exception)
{
transaction.Rollback();
}
}
}
根据Emir的说法,我每发送20条记录,其中包含一条INSERT语句,幸运的是,ExecuteSqlCommand
只需6秒钟。但是SaveChanges()
大约需要2分钟
我如何克服这个问题?我看了一下。我将批量大小(我的意思是插入中的值计数)更改为100,只需20秒!批量大小为50,只需9秒!(有2500项记录)。和爱慕者一样,我不知道为什么?!实际上,我发现插入中的最佳行数约为20。(这取决于列数。阅读我看了一下。我将批大小(插入中的值计数)更改为100,只需20秒!50个批大小,只需9秒!(2500条记录)。和Admir一样,我也不知道为什么?!实际上,我发现插入中的最佳行数约为20。(这取决于列数。阅读