首先,EF确实变得更快:他们投入了大量时间来提高性能 - 通过我的大部分措施,它仍然有明显的开销.考虑一下:EF位于ADO.NET之上.如果EF报告的结果明显快于ADO.NET,那么(我认为您已经怀疑这一点):您没有测量您认为自己在测量的内容.
我怀疑这里的关键问题是你在同一个数据上下文中执行所有操作.这意味着您现在可能只是强调身份管理器和缓存.我无法直接运行您的代码(因为它使用Oracle等),但查看执行的实际查询会很有趣.在实际使用中,每个数据上下文具有有限的工作单元寿命.在相同的数据上下文中执行10,000次操作将是非常罕见的.更典型的是少数操作.
然而,无关:我不得不说:我对你的结果非常满意,显示dapper在原始ADO.NET性能的0.6%以内.这基本上就是我们用dapper的目的:原始ADO.NET的完整性能,但只是消除了编码的痛苦.