为什么Dapper ORM比Entity Framework和ADO.NET更快?

3
请通过对比实体框架(Entity Framework)和ADO.NET,说明Dapper ORM执行速度快的原因。我参考了以下链接进行比较:dapper vs entity framework

5
首先,没有什么比ADO.NET更快的了,因为所有框架都在内部使用ADO.NET。其次,你现在在比较苹果和橘子,因为Dapper是微型ORM,而EF是完整的ORM,因此支持更复杂的场景,当然也会有相关的开销。Dapper需要SQL知识,而EF不需要等等。 - Ivan Stoev
我已经阅读了这个链接 https://www.exceptionnotfound.net/dapper-vs-entity-framework-vs-ado-net-performance-benchmarking/。它说dapper比ADO.NET更快。为什么dapper比ADO.NET更快,即使dapper是基于ADO.NET编写的? - Brillian
2
这个测试不公平,因为它正在使用 DataTableDataAdapter - Ivan Stoev
@IvanStoev 我有点不同意EF与Dapper相比是“完整ORM”的说法。虽然Dapper确实功能集要小得多,但它并不比Entity Framework少一分ORM的能力。它们都可以做对象关系映射。只是Entity Framework做的更多——很多内容都超出了ORM应该具备的范围。 - Alternatex
说到底,IDataReader是“实际上”最快的。这就是任何测试应该使用的,而不是DataSet的填充。重申其他人所说的,dapper不能比ado.net更快。事实上,dapper是一组扩展方法...来自GitHub的引用:Dapper是一个NuGet库,您可以将其添加到项目中,以扩展您的IDbConnection接口。 - granadaCoder
显示剩余2条评论
1个回答

1

它永远不可能发生Dapper比ADO.Net快得多。 时期!

我们知道,Dapper团队通过IL编写了一个先进的机制来加速处理过程,但它仍然运行在ADO.Net之上。他们只是将ADO.Net抽象化,并通过将实际数据(行)转换回对象模型(POCO或DTO)在其上处理所有内容,这将增加额外的时间。

我认为每个人都必须理解ADO.Net层与世界上任何其他ORM的分离关注点。

否则,除非Dapper团队编写自己的DbDataReader版本,否则它们可能会更快,但在他们这样做之前,永远不会发生。

对于EF来说,毫无疑问,Dapper比它快得多,因为它们是当前最轻量级的ORM。

依我看


1
它们更轻量级,因为在运行时处理的代码行数最少。 - Mike

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