2

我认为这确实是一个通用的 C# 问题,但我在使用ObjectContext特别是SaveChanges()持久化数据时尝试处理实体框架时想到了它

现在通常我只会遵循 MSDN 文档的建议以及所需异常的适当 try/catch 逻辑。SaveChanges() 的示例如下:

http://msdn.microsoft.com/en-us/library/bb336792.aspx

现在提出这个问题,因为阅读上面的链接,列出了一个异常,称为OptimisticConcurrencyException,这很好。现在阅读他们给出的示例,其中列出了另一个UpdateException。现在我希望它会列在“例外”标题中。

那么回到最初的问题,“我如何知道可能从对象或其方法抛出的所有异常”?

谢谢大家。

4

2 回答 2

3

不幸的是,我不相信你可以。但是,如果您查看OptimisticConcurrencyException的继承结构,它继承自:

System.Object
  System.Exception
    System.SystemException
      System.Data.DataException
        System.Data.UpdateException
          System.Data.OptimisticConcurrencyException

如果你抓住System.Data.DataException它应该抓住两者而不必做一个全面的。

于 2012-04-13T19:43:24.763 回答
2

我认为,当您指出OptimisticConcurrencyException时,只有一个例外。如果您仔细查看代码,您会注意到SaveChanges()仅抛出此异常。

UpdateException不是针对SaveChanges()而是针对

ObjectQuery<SalesOrderHeader> orders =
            context.SalesOrderHeaders.Where(
            "it.CreditCardApprovalCode IS NULL").Top("100");

或该示例中的其他代码行。

于 2012-04-13T19:42:34.590 回答