【发布时间】:2017-03-20 16:50:05
【问题描述】:
我正在尝试使用实体框架删除记录(如果它存在) - 我想生成类似的东西
delete from tbl where id = 1
我不在乎是否存在任何记录,如果存在我只想删除它们。我应该可以不先像这样选择它们:
var record = new tbl { id = 1, rel = new tbl_related { tbl_id = 1 } };
context.tbl.Attach(tbl);
context.tbl.Remove(tbl);
context.SaveChanges();
语法可能不完全存在,因为这不是复制和粘贴,我添加了外键关系以表明我正在考虑这一点。
在运行此代码时,EF 会生成正确的 SQL 并运行,但我得到一个 System.Data.Entity.Infrastructure.DbUpdateConcurrencyException 说“存储更新、插入或删除语句影响了意外的行数 (0)。实体自加载实体后可能已被修改或删除”。
但是,我完全希望很多时候会删除零行。关于如何解决这个问题的任何想法?
我被指出How to ignore a DbUpdateConcurrencyException when deleting an entity 可能是重复的。这建议处理我现在正在做(并忽略)的 DbUpdateConcurrencyException,但该帖子谈到尝试删除可能已被删除的行 - 我想删除可能永远不存在的行。我知道这可能只是一个语义问题,因为分辨率是相同的,但我想强调我正在做一些我认为完全合理的事情,而框架并没有很好地处理它。
谢谢
【问题讨论】:
-
谢谢@Colin。我会接受您的评论,因为分辨率可能相同,但该帖子中的场景不同。
标签: entity-framework