首页 新闻 会员 周边

博客园混用 Dapper 跟 EF 方式?

0
悬赏园豆:10 [已解决问题] 解决于 2020-09-07 13:33

我使用 dapper 和 ef, 就像下面的代码一样。
我不会使用 ef sqlquery,而是使用 ef 连接和 dapper query/execute来执行我的 sql 逻辑,因为:

  • dapper 查询速度更快。
  • 这样可以重复利用公共连接池。
using (var db = new MyDbContext())
using (var tran = db.Database.BeginTransaction()){

    //EF
    var hoge = db.HogeTable.FirstOrDefault();
    hoge.Name = "fuga";
    db.SaveChanges();

    //Dapper
    // create query and params
    db.Database.Connection.Execute(query, params, tran.UnderlyingTransaction);
    tran.Commit();
}

请问博客园跟各位前辈也是这样做吗?

我问故我在的主页 我问故我在 | 初学一级 | 园豆:29
提问于:2020-09-06 19:08
< >
分享
最佳答案
1

dapper就是高级的sqlhelper,如果你的sql很复杂,考虑性能,可以使用dapper,单表或者简单的查询可以用EF

收获园豆:5
不知道风往哪儿吹 | 老鸟四级 |园豆:2035 | 2020-09-07 08:57
其他回答(4)
1

可以这样使用,我们很少进行这样的混用

dudu | 园豆:31003 (高人七级) | 2020-09-06 19:15

请问前辈你们都是如何使用呢?

支持(0) 反对(0) 我问故我在 | 园豆:29 (初学一级) | 2020-09-06 19:23

@我问故我在: 优先使用 ef ,在需要使用 dapper 时会直接 new SqlConnection

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2020-09-06 21:39
1

只要不用LINQ,只算SQL查询速度和绑定实体的话EF Core速度比dapper快,至于为什么这么快,其实我TM也想知道。

56180825 | 园豆:1756 (小虾三级) | 2020-09-06 22:20

真的 @@?! 请问前辈有测试来源数据吗?

支持(0) 反对(0) 我问故我在 | 园豆:29 (初学一级) | 2020-09-06 23:04
1

简单的用ef,复杂的查询用dapper

会长 | 园豆:12401 (专家六级) | 2020-09-07 09:13
1

这样写造成业务代码和技术代码耦合严重,不利于测试、业务扩展、性能优化等

收获园豆:5
慧☆星 | 园豆:5640 (大侠五级) | 2020-09-07 10:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册