当前位置: 代码迷 >> ASP.NET >> Entity Framework大批量添加数据,效率低。解决方法
  详细解决方案

Entity Framework大批量添加数据,效率低。解决方法

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

我这用EF当Details有2000多条数据就卡住了。。悲剧。。.
请问有好的解决办法吗?

------解决方案--------------------------------------------------------
估计是你自己写的代码有问题
------解决方案--------------------------------------------------------
Entity Framework和linq to sql
都是把数据保存在缓存中的,
先把对象插入缓存,在插入的时候验证对象是否重复

这样当然慢呢

关闭Entity Framework的缓存模式,看行不行

反正我是控制不好Entity Framework的缓存。
至于lingtosql,我改了它的底层。绕过去了
呵呵

------解决方案--------------------------------------------------------
你不能把SqlBulkCopy的速度和SQL的Insert 作比较。
两者实现方式完全不同。
EF只是一个ORM框架,在某些功能的性能上肯定是不能和原生的东西比。

你可以试试用原始的ADO.NET来插入你这2000条数据看要多久。
------解决方案--------------------------------------------------------
public virtual int Add(List<MainEntity entity> list)
{
entity.Validate();

using (var context = new KFPOS2HQEntities())
{
for(;;)
{
context.MainEntities.ApplyChanges(entity);
}
return context.SaveChanges();
}
}

 
  相关解决方案