如果进程被终止,则会发生EFCore事务回滚行为

时间:2017-12-04 09:43:43

标签: sql-server transactions ef-core-2.0

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

1 个答案:

答案 0 :(得分:1)

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