有关 .NET 中数据库的事务范围行为的问题

本文关键字:问题 范围 事务 数据库 有关 NET | 更新日期: 2023-09-27 18:36:01

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

为了实现这一点,我不是在写范围。Complete() 在 Scope 的末尾。

我的问题 :

当我最终不写transaction.Complete();时,dbContext.Savechanges()对数据库所做的更改是否会恢复?

有关 .NET 中数据库的事务范围行为的问题

方法是否正确?

使用 EF,您可以不使用 Tx 作用域,只是不保存更改。取决于您正在测试的内容 - 如果不编写数据库,您可能无法发现模型错误。

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

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

是否有必要将更改写入数据库,以便数据可以被其他人使用 例 程?

恕我直言,你问我们什么?你应该知道你想要什么。对于单元测试,通常情况并非如此 - 但对于集成测试,情况很可能如此。你必须知道。当这里的人们出现并寻求建议时,我总是感到惊讶,而忽略了我也可以在他们不提供任何信息的情况下掷骰子的事实。嘿,告诉我从我的地方到我想去的公司办公室的路线。我既不会告诉你我住在哪里,也不会告诉你我想去哪里,但请告诉我如何开车去那里。明白了吗?

我在测试方法中使用了两个不同的数据库。我能够访问 一个 AviTrackEntities,但不是另一个 ImportDataEntities。

然后你的代码有问题

,或者你的配置有问题。你学过如何做一个错误报告吗?它涉及分析和发布错误。在没有任何信息的情况下,我们应该怎么知道?

代码中是否有任何缺陷或我缺少什么?

你完全错过的是,我们无法接触到源头、机器和你的大脑。我们无法为您制作基本的错误报告。给定信息 - 修复它。是的,有些不对劲。什么 - 没有线索。您宁愿不帮助我们帮助您。

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