【发布时间】:2012-03-21 22:35:24
【问题描述】:
我正在编写测试代码,需要在完成后清理它创建的实体。考虑到测试提前结束的可能性,我也在测试初始化时运行清理代码。
我正在使用这个建议
https://stackoverflow.com/a/5522422/141172
var category = new Category() { CategoryId = 1 };
context.Categories.Attach(category);
context.Categories.Remove(category);
context.SaveChanges();
删除实体。但是,如果实体已被删除(例如,之前的测试运行已成功清理),
ctx.SaveChanges();
抛出异常:
存储更新、插入或删除语句影响了意外 行数 (0)
这很有道理,但是仅仅捕捉异常有点尴尬。有没有一种更简洁的方法来完成此任务,而无需额外前往数据库检查实体?
【问题讨论】:
-
当我像这样测试时,我通常只是将所有内容包装在 TransactionScope 中,并且在测试结束时,我不提交事务。这是你能做到的吗?
标签: ef-code-first