我有一个 ASP.NET MVC3 项目,它使用 EF5 db-first 进行数据访问;我的前任建立的模式是引入以下更新/删除操作检查:
if (context.SaveChanges() == 0)
throw new SqlExecutionException("...");
我最近意识到,当使用未更改的数据更新现有数据时,这种方法会失败,例如当用户打开一个窗口来编辑内容并按“确定”而不实际更改任何内容时;那么更改的记录数为 0,抛出异常,这是错误的。
环顾四周,我发现这个检查的目的是错误的:如果记录在从数据库中提取后被破坏,EF 将抛出 DataException 的子类型来表示这一点,我无法想到存在此检查的任何其他原因。我的前任已经脱离了现实,因此我的问题是:我可以安全地从代码中清除这些检查,并在更高级别上使用 DataException 过滤器来补充它们吗?
最佳答案
是的,这是 C++ 时代的模式。如果存在数据库约束违规,EF 或其他 ORM 会给您良好的错误消息。
关于c# - 使用 context.SaveChanges() == 0 测试操作是否成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701271/