博客园混用 Dapper 跟 EF 方式?

2020-09-07 12:46发布

问题:

我使用 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();
}

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

回答1:

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



回答2:

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



回答3:

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



回答4:

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



回答5:

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



标签: c# dapper