Entity Framework或SqlDataReader

3
我知道在SO上有一两个类似的问题,但我们已经过了几年,我知道EF的速度和性能已经得到了提高,所以那些可能已经过时了。我正在编写一个新的webservice来替换旧的webservice。为了复制现有功能,它只需要执行少量数据库操作。这些操作包括:
  1. 调用现有存储过程获取数据(2)
  2. 将SQL发送到数据库执行(应该是存储过程)(5)
  3. 更新记录(2)
  4. 插入记录(1)
总共有10个操作。数据库非常大,但我只直接处理3个表(存储过程执行一些复杂的JOIN操作)。在获取数据时,我构建了一个对象数组(例如Employees),然后通过webservice返回。
根据我的Entity Framework经验,因为我没有对数据进行任何高级操作,我认为EF不是我目的的正确工具,SqlDataReader更好(我想它会更轻便、更快速)。

@marc_s 说了我的话。给你一个赞。 - DevProve
1个回答

7
实体框架主要关注于开发人员生产力——易于使用,易于完成任务。
EF在“原始”ADO.NET之上添加了一些抽象层。它不适用于大规模的批量操作,并且比“原始”ADO.NET慢。
使用SqlDataReader会更快,但这也需要更多(开发者的)工作。
选择对您更重要的内容:快速轻松地完成任务(作为开发者),还是通过“艰难的方式”获得最高速度。
这个“问题”真的没有一个好的“单一答案”……选择正确的工具/方法来完成手头的工作并使用它。

我们bservice的顶级速度真的很快。此外,因为没有太多要做的事情(就像我说的,只有10个操作),所以不应该花费太长时间。因此,对于性能提升来说,我们开发人员的更多工作是一个很好的权衡。 - VictorySaber
1
@VictorySaber 如果性能是关键,那么可以考虑在更新期间使用表值参数(例如与合并一起使用),以及使用SqlBulkCopy进行批量插入。根据数据的性质,还可以使用线程或TPL进行并发插入/更新操作。 - StuartLC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接