首页 > 解决方案 > EF Core 在事务中创建一个新的独立事务

问题描述

在我的代码中,我需要在数据库中执行一个操作并在另一个(环境)事务已经到位时提交它(想象一个审计跟踪,但这只是一个例子)。这当然必须在单独的连接中进行,但我不知道如何强制 EF 为 dbcontext 使用新连接。

在对我有一个现有事务的数据库进行一些工作时dbContext,我需要调用一些过程来立即对数据库进行永久更改。在这个过程中,我可以调用serviceProvider.CreateScope()来创建新范围,在那里获取 anewDbContext和 a 使用newDbContext.Database.BeginTransaction(),但事实证明,新事务只是嵌套在外部事务中;如果外部事务回滚,则所做的更改newDbContext将丢失,但我希望即使外部事务失败,我的更改也能持续存在。

如何在我的代码流中运行独立于环境事务的单独事务?我尝试过new TransactionScope(TransactionScopeOption.RequiresNew),但失败并显示“环境事务需要在开始此连接上的事务之前完成”。

编辑:澄清了为单独的事务使用新连接。

标签: transactionsentity-framework-coreef-core-3.1

解决方案


推荐阅读