【问题标题】:Entity Framework or SqlDataReader [closed]实体框架或 SqlDataReader [关闭]
【发布时间】:2014-03-11 08:59:06
【问题描述】:

我很欣赏关于 SO 的一两个类似问题,但我们已经过去了几年,我知道 EF 的速度和总体性能已经提高,所以这些问题可能已经过时了。 我正在编写一个新的 web 服务来替换旧的。复制现有功能只需执行少量数据库操作。它们是:

  1. 调用现有存储过程获取数据 (2)
  2. 发送SQL到要执行的数据库(应该是我知道的存储过程)(5)
  3. 更新记录 (2)
  4. 插入记录 (1)

总共 10 次操作。数据库很大,但我只直接处理 3 个表(存储过程执行一些复杂的 JOIN)。 在获取数据时,我构建了一个对象数组(例如员工),然后由 Web 服务返回。

根据我使用 Entity Framework 的经验,并且因为我没有对数据做任何聪明的事情,我认为 EF 不是适合我的目的的工具,而 SqlDataReader 更好(我想它会更轻更快) .

【问题讨论】:

  • @marc_s 说了我的话。 1 喜欢你。

标签: entity-framework sqldatareader


【解决方案1】:

Entity Framework 主要关注开发人员的生产力 - 易于使用,易于完成工作。

EF 确实在“原始”ADO.NET 之上添加了一些抽象层。它不是为大规模、批量操作而设计的,并且它比“原始”ADO.NET 慢。

使用SqlDataReader 会更快 - 但也需要更多(开发人员的)工作。

选择对您更重要的 - 快速轻松地完成任务(作为开发人员),或者通过“艰难的方式”完成任务以达到最高速度。

对于这个“问题”确实没有好的“单一答案”......为手头的工作选择正确的工具/正确的方法并使用它。

【讨论】:

  • 网络服务的最高速度真的。此外,因为没有太多工作要做(正如我所说,10 次操作),所以不应该花太长时间。因此,对我们开发人员而言,更多的工作是性能提升的良好权衡。
  • @VictorySaber 如果性能是关键,那么看看在更新期间使用table valued parameters(例如与merge 结合使用),以及SqlBulkCopy 用于批量插入。根据数据的性质,也可以使用线程或 TPL 进行并发插入/更新操作。
猜你喜欢
  • 2023-04-03
  • 2010-10-13
  • 2014-07-19
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2010-09-06
  • 1970-01-01
相关资源
最近更新 更多