我可以在实体框架中使用dapper-dot-net吗?

时间:2013-07-29 20:17:47

标签: performance entity-framework dapper

我正在尝试使用dapper-dot-net加速我的asp.net mvc应用程序的某些区域。我也首先使用EF5代码。

由于dapper-dot-net只是IDbConnection的一些扩展,我可以使用

DbContext.Database.Connection 

使用dapper-dot-net?我测试它是否有效。但是,我不确定这是使用它的正确方法吗?特别是,当我使用这种方式时,实体框架是否会产生一些可能会影响性能的影响?

3 个答案:

答案 0 :(得分:12)

在某些情况下,使用Dapper可以显着提升性能。

您可以与Dapper共享EF连接。但是(尽管不太可能是一个问题)您应该注意并发问题(例如,由于尝试将多个数据读取器与同一连接相关联)。

如果遇到此类问题,您可以选择使用连接字符串(DbContext.Database.Connection.ConnectionString)为Dapper提供新连接,而不是共享连接。

答案 1 :(得分:6)

是的,你可以这样使用它。由于Dapper正在处理扩展方法,因此您可以将其用于代码的性能敏感区域。并且您可以继续将EF用于代码的其他区域。您仍在使用EF的查询速度不会那么快 - 但至少使用Dapper的查询会更快。

答案 2 :(得分:0)

我认为你必须重新考虑这个问题。通过改变ORM来提高性能并不是一种好方法。正确的是,小巧玲珑比EF更快更轻,但这并不意味着要提高应用速度,最好使用小巧玲珑。 EF功能足以处理整个数据层,如果你遇到性能,你必须引入新功能,如缓存或没有sql db。

你必须看到从EF变为精致的多少会为你节省多少时间?以及缓存可以为您的应用程序带来多大的速度。

并添加dapper还有其他费用:如果必须指向保存并更新如何解决回滚情况,如何管理事务,那么工作单元和存储库模式如何。

在决定选择Dapper之前,您需要检查这些因素。