1

目前,我有一个在 .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 的标准流程是什么?它会中止交易还是继续交易?有没有我找不到的设置?任何帮助将不胜感激。

4

1 回答 1

1

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

于 2017-12-04T20:39:29.183 回答