【发布时间】:2014-09-30 22:30:18
【问题描述】:
如果我不清楚我的问题,但我正在做一个我还不太了解的项目,我提前道歉,所以请随时要求详细说明某个部分。
现在我正在做一个已经存在于项目中但无法正常工作的测试,即添加到数据库中的数据没有被删除,并且它仍然使用我在返工之前的代码t 尚未分配。此时测试工作正常,但在运行后,数据库中仍有一些不应该添加的记录。
在代码中,你可以在这里找到 http://pastebin.com/YzRqi7dt ,你可以看到测试方法。在 TestInitialize 中添加的记录被正确删除,但在完成测试后,数据库中仍有 4 条记录过多。其中 2 个是测试方法中 ConexioContacts 的副本。我知道它是副本,因为我在调试期间的某个时刻注意到添加了 8 个联系人而不是 4 个。数据库中保留的其他 2 个联系人看起来像是来自我的 Seed() 方法,但不会调用 Seed() 方法或任何其他方法。
这4条记录的添加发生在
List<Synchronizer<BaseContact, ExternalContact, ConexioContact>.ConexioEntitySyncContext> matches =
Synchronizer<BaseContact, ExternalContact, ConexioContact>
.FindMatches(conexioEntities, externalEntities, _unitOfWork);
当它在后台输入DataContext.SaveChanges() 时(在调试时发现)。上面的方法可以在这里找到:http://pastebin.com/t9iMGB31。 DataContext.SaveChanges() 在方法结束时在 UnitOfWork.SaveChanges() 中被调用。
希望这很清楚,如果没有,请询问。
诚挚的问候, 格拉文科
编辑:
如果我运行测试,Wyatt Earp 建议的事务解决了问题,但我仍然不知道错误是如何或为什么发生的,如果有人能详细说明这一点,我将不胜感激。
【问题讨论】:
标签: c# entity-framework