日期:2014-05-20  浏览次数:20993 次

Entity Framework大批量添加数据,效率低
用EF一次新增2000多条数据的时候,居然需要10多分钟。。请问这个可以怎么优化?
主实体
MainEntity:
ID
List<Detail> Details
Created
子实体。
Detail:{....}

我这用EF当Details有2000多条数据就卡住了。。悲剧。。.
请问有好的解决办法吗?
------解决方案--------------------
把你的新增代码发来看看
------解决方案--------------------
首次运行吗?

首次运行肯定会慢点

你多试几次 看看最短需要多长时间
------解决方案--------------------
可以拼接成insert sql语句
然后使用entity.executeStoreCommand来执行~
------解决方案--------------------
不要每次都建新的 context,打开一个事务,添加2000条,SaveChanges,提交事务,可以好一点。


------解决方案--------------------
什么操作要一次插入2000条,这本身就是个悲剧。
------解决方案--------------------

public virtual int Add(MainEntity entity)
        {
            entity.Validate();

            using (var context = new KFPOS2HQEntities())
            {
                context.MainEntities.ApplyChanges(entity);
                return context.SaveChanges();
            }
        }
你不要每次都saveChanges一次,创建一个事务,2000条add完成了以后再save应该会比较快一些喔,而且,context = new KFPOS2HQEntities()你不要每次都去new啊亲,这样很耗费时间的