跨上下文使用事务这里需要主要的是,跨上下文使用事务必须使用同一个连接,所以optionsBuilder.UseSqlServer(connection);
这里的写法改变一下,使用同一连接
DbContextOptionsBuilder<DbContextBase> optionsBuilder = new DbContextOptionsBuilder<DbContextBase>();IDbConnection connection = new SqlConnection("connStr");optionsBuilder.UseSqlServer(connection);var options =optionsBuilder.Options;using (var dbContext = new DbContextBase("202209", options)){using (vartransaction =await dbContext.Database.BeginTransactionAsync()){using (var dbContext2 = new DbContextBase("202210", options)){await dbContext2.Database.UseTransactionAsync(transaction);//TODO....transaction.Commit();}}}
总结EFCore分表的实现大致全是这样 , 没有什么区别 。可以参考一些开源的框架,对现有的系统进行适当的调整,毕竟别人写的并不一定适合你 。希望这篇文章可以帮到你 。
推荐阅读
- 利用msg_msg实现任意地址读写
- 用AR Engine手部骨骼跟踪能力实现虚拟手表试戴
- 含源码 手把手教你使用LabVIEW人工智能视觉工具包快速实现传统Opencv算子的调用
- Jmix 中 REST API 的两种实现
- 含源码 手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集
- 之三 2流高手速成记:SpringBoot整合mybatis/mybatis-plus实现数据持久化
- 一百一十九 salesforce零基础学习In-App Guidance实现引导页操作功能
- 五 JPA - 原生SQL实现增删改查
- Vue实现拖拽穿梭框功能四种方式
- Python实现给图片加水印功能