2010-01-29 70 views
1

我的問題是,當我從實體框架(例如,由於空值不允許爲空)得到SQL異常時,有時很難找出哪個屬性被引用,並且爲什麼它是空的。實體框架在拋出異常時是否可以包含SQL命令?

現在我知道了我可以設置一個SQL跟蹤並記錄它,它會給我提供我需要的信息,但這意味着我必須在重新登錄時重新創建問題,這並不總是簡單。

理想情況下,我希望能夠讓實體框架自動包含引發問題的實際SQL語句,當它引發SQL異常時。

這可能嗎?

回答

1

你看過SqlException的Errors屬性嗎?它將包含一個SqlErrors集合,該集合具有屬性Procedure,它將聲明執行的函數的名稱,該名稱可能導致錯誤

+0

SQLError上的「Procedure」屬性爲空,但「Message」屬性包含我之後的詳細信息。不知道我以前如何設法錯過。非常感謝。你已經解決了我的實際問題(所以我會給你答案),但我原來的查詢類型仍然存在,似乎沒有辦法從異常對象中獲得EF執行的實際查詢。無論如何。再次感謝。 – 2010-02-19 10:05:40

0

如果是sql異常被拋出,那麼它將包含detsil並確保沒有任何異常被throw new ex;或拋出ex;在捕獲使用拋出,而不會壓制任何異常的一部分,你會有詳細的例外。 一旦我希望它有幫助,這就是問題所在。

+0

不,這不是問題,對不起。我不會重新拋出異常。它直接來自實體框架層。它是一個SQLException,不包含導致問題的SQL命令。 – 2010-01-29 15:07:39

相關問題