【发布时间】:2010-10-08 13:27:25
【问题描述】:
我正在开发一个基于实体框架的软件来处理 MS SQL Server 2008 数据库中的数据。
[问题 1]
我刚刚尝试将一些小数据(大约 2 Mb)从我的程序插入到数据库:性能非常糟糕!插入这些数据需要超过 1 分钟!
我尝试生成预编译的视图,我得到了相同的结果:-(
我的所有代码都使用业务层(使用 T4 模板从 .edmx 文件自动生成)来管理服务层中的数据。在对象的关系中导航非常实用。
如何使用 Entity Framework 提高这些插入的性能?
[麻烦 2]
另外,在使用 SaveChanges() 方法将数据插入数据库之前,我使用 AddObject() 方法填充我的对象上下文。我使用 AddObject() 将大约 100 000 个小对象(大约 2 Mb)添加到我的对象上下文中:这需要很长时间(超过 10 分钟)!
如何减少这个时间?
更新
我的程序必须在 2-3 分钟内保存超过 50 Mb 的数据库?你认为 EF 可以吗?
【问题讨论】:
-
实体框架是初始易用性和性能之间的权衡。如果您对性能感兴趣,请远离实体框架
-
@Andomar,这非常无用。这不是正常的表现。移除 EF 可能无法修复它,无论如何都会像斩首治疗痤疮一样。 Patrice 需要分析应用程序以发现问题,而不是随意指责工具。
-
@Craig Stuntz:所以,在您看来,建议某人配置 EF 更有帮助?呵呵
-
@Andomar:Patrice 分析正在开发的应用程序绝对比随机重写基础设施更有用。基于偏见的建筑很少是成功的策略。
-
@Craig Stuntz:我假设它是一个新的应用程序,还不能工作,并且存在无法克服的性能问题。正是您对 EF 应用程序的期望
标签: c# performance entity-framework sql-server-2008