使用context.SaveChanges()== 0来测试操作是否成功

时间:2013-12-20 10:16:39

标签: c# asp.net-mvc-3 entity-framework exception-handling entity-framework-5

我有这个ASP.NET MVC3项目,它使用EF5 db-first进行数据访问;我的前任建立的模式是引入以下检查更新/删除操作:

if (context.SaveChanges() == 0)
    throw new SqlExecutionException("...");

我最近意识到这种方法在用于更新未更改数据的现有数据时失败,例如当用户打开窗口编辑内容并按“ok”而不实际更改任何内容时;然后,更改记录的数量为0,抛出异常,这是错误的。

环顾四周我已经认识到这个检查的目的是错误的:如果记录在从DB中被删除后被破坏,EF将抛出一个DataException的子类型来表示,并且我无法想到此检查存在的任何其他原因。我的前任是脱节的,因此我的问题是:我可以安全地从我的代码中清除这些检查,并在更高级别上为DataExceptions补充它们吗?

1 个答案:

答案 0 :(得分:3)

是的,这是C ++时代的模式。如果存在数据库约束违规,EF或其他ORM将为您提供良好的错误消息。