2011-02-17 173 views
1

我知道EF对于批处理操作并不好,但我试图理解我们遇到的问题。实体框架context.SaveChanges()慢 - 包含SQL Profiler

我们正在循环一个文本文件,其中有5000个产品要插入到我们的数据库中。

在调用context.SaveChanges()和看探查我看到:

审核登录0MS

RPC:已完成(实际查询插入产品)作为显示9读取和0的持续时间MS

审核注销2750MS

为什么审计日志出服用2+秒?实际的SQL查询根本不需要任何时间,审计登录也不占用任何时间。

这是EF的开销吗?有没有人有任何建议?我唯一偶然发现的是预先生成的视图,但不知道这是否会有所帮助。

+0

那么这是否意味着它会在2,75秒内执行5000次插入? – 2011-02-17 15:15:54

回答

0

注销本身不需要2秒钟,profiler会显示注销事件的会话持续时间,所以从注册到注销时间为2750ms。

在调用可能需要一些时间的注销之前,应用程序中是否发生了某些事情?在插入和注销时间之间会发生什么?

+0

我觉得它实际上不是SQL服务器,我应该更好地说出我的问题。如何调试实体框架以找出造成延迟的原因? 我已经通过使用Linq To Sql修复了这个问题 - 使用'dated' orm :)获得批量导入需要4小时到56秒 – izip 2011-02-19 11:44:08