【问题标题】:Poor performance for POCO GeneratorPOCO 生成器性能不佳
【发布时间】:2013-10-15 14:48:55
【问题描述】:

我正在开发一个旧版应用程序,我们在使用实体框架 (4.0.0) 和大量插入时表现不佳。

当我尝试使用 POCO 生成器 (T4) 时,问题更严重,SaveChanges 的时间延长了三倍。这是巨大的,如果你知道我为什么会遇到这个问题,我很感兴趣。

【问题讨论】:

  • ORM 不适用于“大量插入”。使用纯 SQL。
  • 我知道,我不是orm-fan,但是Legacy应用使用这个并且有一个非常大的Model,批处理和应用使用相同的域,我无法快速改进这个策略...我不喜欢这样,但我必须首先处理它。感谢您的评论
  • 没有代码我们看不到是否有任何明显的性能影响。
  • 顺便说一句,如果我使用少量数据监控操作,我也会遇到同样的问题...@GertArnold 我的问题是关于 POCO 生成器与实体对象的性能的一般审查
  • 使用 POCO,元数据和映射必须在运行时生成,仅此而已。这是一次性操作,因为模型已缓存。所以你应该在上下文第一次与数据库交互时注意到它。但这只是poorworse之间的区别。

标签: c# entity-framework poco t4


【解决方案1】:

我没有针对不同生成器的任何性能指标。但无论如何,瓶颈不应该出现在您的上下文中。你应该知道 EF 每次插入、更新和删除都会生成一个 SQL 语句,如果你没有先显式打开连接,它会在每个 SQL 语句之前登录并从 sql server 注销一次。

此外,上下文必须保持状态和关系,因此随着上下文变得越来越大,性能会下降。 SaveChanges 必须首先弄清楚上下文中发生了什么,这应该是 POCO 生成器与实体对象最终执行时间不同的原因。至于它长 3 倍,需要更多细节才能弄清楚。

PS,如果您坚持使用旧代码,您应该考虑使用 EF 批量复制。

【讨论】:

    猜你喜欢
    • 2013-08-02
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2011-09-11
    相关资源
    最近更新 更多