为什么在EF4中少量添加/删除需要几秒钟?

时间:2010-12-23 21:49:15

标签: c# performance entity-framework-4 code-first

使用实体框架4.我以前创建了一个Code First数据库,一段代码需要删除和添加16个对象,每个需要6秒。每个查询的时间超过300毫秒!

删除/添加发生在foreach范围内,SaveChanges()之外有foreach

alt text

在上面的图片中,您可以看到每次拍摄需要6秒,这是34%的时间。

这对我来说听起来不正常...... 为什么会这样,我怎样才能改善表现呢?

如果没有解决方案:我可以使用任何变通方法吗?重写我的项目会很痛苦......

1 个答案:

答案 0 :(得分:5)

我建议你试试像EF Profiler这样的东西。我认为有一个免费试用版,可以让你尝试一下。基本上,有了它,你可以看到你的EF应用程序在内部发生了什么样的事情。

需要注意的另一点:这是一个偶然的网络应用程序吗?在我自己的项目中,我发现当我在Cassini(内置的visual studio webserver)中运行应用程序时,事情进展缓慢。转移到IIS 7突然使一切变得更快。如果你安装了IIS,那么这两者都不难做到。 只需转到Web项目的属性,转到“Web”选项卡并切换“使用本地IIS Web服务器”。它还允许您从此处创建虚拟目录,因此无需直接管理IIS。

除此之外,我认为你的问题没有太多可说的,因为我们没有任何示例代码。可能是因为相关实体或其他东西,您的16个对象实际上会产生大量查询。 EF Profiler会显示这一点。


增加: 另一件需要注意的事情是EF并不是真正意义上的批量操作。如果您需要立即进行大量更新/删除/插入,我认为您会更好地使用其他内容。

我知道16个实体还没有批量(但是),但我认为无论如何我都会把这个小概念放在这里。