Linq SaveChanges的问题

时间:2009-08-20 18:40:44

标签: linq savechanges

我是否应该费心去检查对象是否正确保存?

if (objectContext.SaveChanges() > 0)

如果没有,它应该抛出异常,对吗?

2 个答案:

答案 0 :(得分:2)

根据msdn documentation,SaveChanges()方法将返回添加,修改或删除的记录数。它可能引发的异常是InvalidOperationException或OptimisticConcurrencyException。

我认为检查记录数有一定价值。如果你发出一个试图修改或删除的有效语句,但没有任何东西可以修改或删除,它只会返回0,即使没有异常,因为技术上没有发生任何错误。

答案 1 :(得分:2)

根据MSDN

  

SaveChanges在一个   交易。 SaveChanges将滚动   回到那个交易并抛出一个   异常,如果有任何脏   ObjectStateEntry对象不能   持续存在。

所以你想要尝试/ catch来代替异常。如果您想知道受影响的记录的数量,那么在try块中您将拥有int recordsAffected = objectContext.SaveChanges();

查看MSDN链接以获取示例。