EF SaveChanges运行速度太慢

时间:2017-11-19 16:05:30

标签: c# sql-server entity-framework entity-framework-6 sql-insert

我正在尝试使用EF6 MVC在60个字段中插入大约2000-5000条记录。

这是我的代码:

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

根据Admir的answer,我发送每20条记录一个INSERT语句,幸运的是ExecuteSqlCommand只需要6秒。但是SaveChanges()需要大约2分钟!

我如何克服这个问题?

0 个答案:

没有答案