【问题标题】:Delete an Entity Framework Entity that May or May Not Exist删除可能存在或不存在的实体框架实体
【发布时间】: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


【解决方案1】:

最简单、最简洁的方法不是使用假实体,而是运行一个简单的 SQL 查询:

var rows = context.Database.ExecuteSqlCommand("delete Category where ...");
if (rows == 0)
    //nothing was deleted

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    相关资源
    最近更新 更多