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