24

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

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

DbContext.Database.Connection 

使用 dapper-dot-net?我测试它工作正常。但是,我不确定这是使用它的正确方法吗?特别是,当我使用这种方式时,Entity Framework 是否还会产生一些影响性能的影响?

4

3 回答 3

17

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

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

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

于 2013-07-29T20:41:00.257 回答
12

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

于 2013-07-29T20:20:46.627 回答
2

我认为你必须重新考虑这个问题。通过更改 ORM 来提高性能并不是一个好的技术。dapper 比 EF 更快更轻是正确的,但这并不意味着要提高应用程序的速度,最好使用 dapper。EF 足够强大,可以处理整个数据层,如果您遇到性能问题,您必须引入新功能,如缓存或没有 sql db。

您必须看到从 EF 更改为 dapper 将为您节省多少时间?以及缓存可以为您的应用程序带来多少速度。

并且添加 dapper 有其他费用:当您必须保存和更新点时如何管理事务,您将如何解决回滚情况,工作单元和存储库模式怎么样。

这些是您在决定选择 Dapper 之前必须检查的因素。

于 2018-05-29T08:44:50.607 回答