如果进程被终止,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。
目前我有一个基础 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。