我认为这确实是一个通用的C#问题,但是在使用 ObjectContext 并特别是 SaveChanges() <持久化数据时尝试处理实体框架时我想到了它/ p>
现在通常我会按照MSDN文档建议的内容和适当的try / catch逻辑来获取所需的异常。 SaveChanges()的示例如下:
http://msdn.microsoft.com/en-us/library/bb336792.aspx
现在我提出这个问题,因为阅读上面的链接,列出了一个名为 OptimisticConcurrencyException 的异常,这很好。现在阅读他们给出的示例还有另一个列出的 UpdateException 。现在我希望在Exceptions标题中列出。
回到最初的问题,“如何知道可能从对象或其方法抛出的所有异常”?
谢谢大家。
答案 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");
或该示例中的其他代码行。