2012-04-13 20 views
2

这真的是一个通用的C#问题,我认为,但是当我试图处理实体框架时想到了使用ObjectContextSaveChanges()如何找出可能抛出的所有可能的异常(具体为实体框架)

现在通常我只是按照MSDN文档建议的和所需的例外适当的try/catch逻辑。实施例是为调用SaveChanges()执行以下操作:

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

查阅即时冒充这个问题,因为阅读上述链接,没有列出一个例外,称为OptimisticConcurrencyException这是好的。现在阅读他们给出的例子,还有另一个列出的UpdateException。现在我希望将其列在“例外”标题中。所以回到原来的问题,“如何知道可能从一个对象或其方法抛出的所有异常”?

谢谢大家。

+1

在c#中你不行。 – ChrisWue 2012-04-13 19:40:20

+1

您可以查看该方法及其调用的每种方法的源代码(这不是一个全部区块)。 – Servy 2012-04-13 19:44:31

回答

3

不幸的是我不相信你可以。

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

如果赶上System.Data.DataException它应该抓住两个,而不必做一个包罗万象的:不过,如果你看看OptimisticConcurrencyException继承结构从继承。

+0

感谢马修!:)我会放弃这一切。再次感谢。 – garfbradaz 2012-04-13 19:52:08

2

我想,只有一个例外,因为您指出OptimisticConcurrencyException。如果您仔细查看代码,则可以注意到SaveChanges()只会引发此异常。

UpdateException不是的SaveChanges()但对于

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

或在该实施例的代码的其他行。

+0

你是对的,谢谢matey寻找,累了的眼睛:( – garfbradaz 2012-04-13 19:51:01

相关问题