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