如何找出可能引发的所有可能的异常(特别是实体框架)

时间:2012-04-13 19:36:38

标签: c# entity-framework exception-handling

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

现在通常我会按照MSDN文档建议的内容和适当的try / catch逻辑来获取所需的异常。 SaveChanges()的示例如下:

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

现在我提出这个问题,因为阅读上面的链接,列出了一个名为 OptimisticConcurrencyException 的异常,这很好。现在阅读他们给出的示例还有另一个列出的 UpdateException 。现在我希望在Exceptions标题中列出。

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

谢谢大家。

2 个答案:

答案 0 :(得分:3)

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

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

如果你抓住System.Data.DataException,它应该抓住两者,而不必全力以赴。

答案 1 :(得分:2)

我认为,只有一个例外,因为你指出 OptimisticConcurrencyException 。如果您仔细查看代码,那么您可以注意到 SaveChanges()仅抛出此异常。

UpdateException 不适用于 SaveChanges(),但适用于

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

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