如果进程被终止,EFCore 事务回滚行为

EFCore transaction rollback behavior if process is killed

目前我有一个基础 class 用于在 .net Core 2 项目 (EFCore 2.01) 上使用 NUnit 进行集成测试。在此项目中,我们在设置时创建事务并在拆卸时执行回滚以隔离测试。

public class BaseTestsWithRollbackPerTest : BaseTests
{
    [SetUp]
    public void Setup()
    {
        this.Transaction = this.ApplicationContext.Database.BeginTransaction();
    }

    [TearDown]
    public void TearDown()
    {
        this.Transaction.Rollback();
    }
}

我的一所大学提出了一个问题,即如果有人可能会中止测试或关闭他们的 PC/VS2017 挂起等,我们可能会有挥之不去的交易。

我已经检查过,数据库和 XACT_Abort 已关闭,这是一个长期存在的数据库,因此我可能无法更改该设置。

我的问题是 EFCore 的标准流程是什么?它会中止交易还是继续进行?有没有我找不到的设置?任何帮助将不胜感激。

如果事务从未提交,它将超时并且SQLServer 将执行回滚。 SQLServer 将处理这个,而不是 EF。