transactions - EF Core 在事务中创建一个新的独立事务
问题描述
在我的代码中,我需要在数据库中执行一个操作并在另一个(环境)事务已经到位时提交它(想象一个审计跟踪,但这只是一个例子)。这当然必须在单独的连接中进行,但我不知道如何强制 EF 为 dbcontext 使用新连接。
在对我有一个现有事务的数据库进行一些工作时dbContext
,我需要调用一些过程来立即对数据库进行永久更改。在这个过程中,我可以调用serviceProvider.CreateScope()
来创建新范围,在那里获取 anewDbContext
和 a 使用newDbContext.Database.BeginTransaction()
,但事实证明,新事务只是嵌套在外部事务中;如果外部事务回滚,则所做的更改newDbContext
将丢失,但我希望即使外部事务失败,我的更改也能持续存在。
如何在我的代码流中运行独立于环境事务的单独事务?我尝试过new TransactionScope(TransactionScopeOption.RequiresNew)
,但失败并显示“环境事务需要在开始此连接上的事务之前完成”。
编辑:澄清了为单独的事务使用新连接。
解决方案
推荐阅读
- visual-studio-code - 更改终端中运行 Python 文件的默认路径
- lua - 如何在罗技游戏 lua 脚本中设置随机循环时间?
- java - 粗体文本媒体播放器
- android - Viewstub 无法将 stringresource 传递给数据绑定
- ruby - 如何匹配看起来像列的非结构化字符串中的 2 个键值对
- amazon-web-services - 在 CFN 资源提供程序测试中创建 S3 存储桶时出现 IllegalLocationConstraintException
- android - 如何以编程方式查找重复文件?
- java - 仅使用 org.apache.commons.math3 计算马氏距离
- javascript - 在谷歌地图上的多个标记之间画线
- algorithm - 从多个数组中查找 k 个最大值和最小值