关于.NET中TransactionScope for Database行为的问题

时间:2016-02-24 07:10:51

标签: c# entity-framework-6 transactionscope msdtc data-cleaning

我正在使用TransactionScope来执行测试方法。 我希望在执行测试方法期间对数据库所做的所有更改最终都会回滚到以前的状态。

为了达到这个目的,我不会在Scope的末尾写下scope.Complete()。

我的问题:

当我最后没有写dbContext.Savechanges()时,transaction.Complete();对数据库所做的更改是否会被还原?

1 个答案:

答案 0 :(得分:1)

  

采取的方法是否正确?

使用EF你可能不会使用Tx范围而只是不保存更改。取决于您正在测试的内容 - 如果不编写数据库,您可能无法找到模型错误。

  

我是否需要添加dbContext.SaveChanges();

取决于您是否希望这种情况发生。

  

是否有必要对数据库进行更改,以便其他人可以使用数据   例程?

各方面,你问美国什么?你应该知道你想要什么。对于单元测试通常情况并非如此 - 但对于集成测试,它可能是。你必须知道。当这里的人们出现并提出建议时,我总是感到惊讶,因为我可能会在没有他们提供任何信息的情况下掷骰子。嘿,告诉我从我的地方到我想去的公司办公室的路线。我不会告诉你我住在哪里,也不想告诉我,但请告诉我如何去那里。得到它?

  

我在测试方法中使用两个不同的数据库。我能够访问   一个AviTrackEntities而不是其他ImportDataEntities。

然后您的代码有问题,或者您的配置错误。您曾学会如何制作错误报告?它涉及分析,并发布THE ERROR。没有任何信息,我们怎么知道?

  

代码中是否有任何缺陷或我遗漏的东西?

你完全错过的是我们无法访问来源,机器和你的大脑。我们无法为您制作基本的错误报告。鉴于信息 - FIX IT。是的,出了点问题。什么 - 没有头绪。你宁愿不帮助我们帮助你。

由于数据库的持久性,数据库单元测试非常复杂。将数据库重置为已知的启动状态可能很复杂。