EF Core和Dapper混用使用事务

场景

	在开发过程中,有时候有一些比较复杂的业务,我个人比较喜欢直接用dapper执行原生SQL语句。还有一些简单的CURD可能直接使用EF Core实现。所以程序中会混用2种ORM

问题

	由于业务需要事务,那么一开始我想当然的就直接使用dapper的connection.BeginTransaction。然后在里面执行dapper的SQL语句,还有执行ef的上下文。因为二者是使用不同的connection。所以EF这边我就使用了dbContext.Database.UseTransaction(transcation as DbTransaction);结果就报错了。

The specified transaction is not associated with the current connection. Only transactions associated with the current connection may be used.
想想也是应该的。因为二者使用不同的连接,如果使用同一事务势必会造成不同连接线程间的安全问题。
后来查看EF可以修改连接:

dbContext.Database.SetDbConnection(connection as DbConnection);

手动修改EF上下文的连接方式,跟dapper同步即可以解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值