数据库
首页 > 数据库> > c#-在Entity Framework .NET中对数据库进行的回滚更改

c#-在Entity Framework .NET中对数据库进行的回滚更改

作者:互联网

我正在编写用于测试框架的单元测试用例.单元测试将添加和修改现有数据库中的数据.测试完成后,我需要回滚对数据库所做的所有更改,即删除添加的行并还原修改后的行.

我正在使用Entity Framework 6来访问数据库.基础数据库是SQL Server. EF6是否提供任何支持来实现这一目标?

目前,我将更改存储在一个列表中,并参考此列表来清理数据库.但是使用这种方法会随机留下一些残留物.不过我不确定原因,可能是某些比赛条件或其他原因.

寻找一些最小和聪明的选择.提前致谢 :)

解决方法:

您可以将测试包装在事务中,而不必提交更改:

using (TransactionScope scope = new TransactionScope()) {
    //do your stuff
}

但是对于单元测试助手,您可以使用提供内存数据库操作的Effort – Entity Framework Unit Testing Tool.

编辑以回复最新评论

您可以使用重载的TransactionScope contructor来控制IsolationLevel,因此您可以选择读取还是不读取未提交的更改.

如果您的代理不在交易中,请检查connection string is the same,以便ado.net可以识别连接并将该连接注册在同一交易中.
如果连接字符串不同,则可能需要激活分布式事务处理协调器.在这里,您将解释DTC缩放如何发生:TransactionScope automatically escalating to MSDTC on some machines?

标签:unit-testing,entity-framework-6,rollback,c,sql-server
来源: https://codeday.me/bug/20191119/2032804.html