目前,我在.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的标准流程是什么?它会中止交易还是继续进行?是否有任何我无法找到的设置?任何帮助将不胜感激。
答案 0 :(得分:1)
如果从未提交事务,它将超时,SQLServer将执行回滚。 SQLServer将处理此问题,而不是EF。