EF Core 是不是支持 TransactionScope?

Posted

技术标签:

【中文标题】EF Core 是不是支持 TransactionScope?【英文标题】:Does EF Core support TransactionScope?EF Core 是否支持 TransactionScope? 【发布时间】:2021-03-07 00:23:26 【问题描述】:

我有 .NET Core 3.1EntityFrameworkCore 3.1.8

在一个命令(将数据写入数据库)中,我多次使用SaveChanges() 方法。因此,我决定将所有这些事务化并像这样使用TransactionScope()

using (var scope = new TransactionScope())


这是正确的方法吗?这会正常工作吗?

注意:我有一个 DbContext

【问题讨论】:

应该是嵌套事务吧?我更喜欢根本不使用 TransactionScope,它与分布式事务更相关。 【参考方案1】:

是的,TransactionScope 很可能适合您。作为个人建议,我会改用DbContext.Database.BeginTransaction()

这样做的原因是因为TransactionScope 必须由您正在使用的库实现。一般来说,关系数据库的 SDK 应该支持TransactionScope(我知道 Microsoft.Data.SqlClient for SQL Server 支持,不确定其他数据库)。

来源:https://docs.microsoft.com/en-us/ef/core/saving/transactions#using-systemtransactions

【讨论】:

根本不是一个答案——这个问题对于它的要求非常明确,这完全被忽略了。年龄的 TransactionScope 也有特殊优化(仅针对一个来源)。 正确。我会相应地修改我的答案。

以上是关于EF Core 是不是支持 TransactionScope?的主要内容,如果未能解决你的问题,请参考以下文章

.net ef core 检查是不是插入成功

.net ef core 检查是不是插入成功

EF Core - 属性“JObject.Next”不是虚拟的

.net core EF Core 视图的应用

EF Core中通过Fluent API配置多对多关系

EF Core中通过Fluent API配置多对多关系