2012-05-09 34 views
7

我在MVC3中創建了一個REST API,我需要做的事情是在更新或創建操作失敗時返回描述性消息。在實體框架中獲取導致保存更改異常的字段

"The update operation failed while creating the customer object."這樣的消息不夠好。

我的下一個念頭,就是得到的消息出來返回是這樣的例外:

The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_Business_Category". The conflict occurred in database "MyDb_Dev", table "dbo.Category", column 'CategoryID'. 
The statement has been terminated. 

這似乎是太多的信息。我可以從異常消息中解析出column "CategoryID" ......不知道這是否可靠。

是否有可能爲字段設置屬性,以便它們失敗時我可以獲得該字段的錯誤描述?我接受建議。

回答

0

放置在一個try catch塊有問題的代碼。在catch部分的某處設置一個斷點。然後添加名爲的手錶項目ModelState

ModelState.IsValid會告訴你模型是否有效(或錯誤)。

ModelState.Keys將顯示模型包含的字段列表。

ModelState.Values將向您顯示每個相應字段的數據值。向下鑽取每個節點,您將看到一個錯誤節點,並計算該數據項中有多少錯誤。尋找具有多於0個錯誤的那個。記下其索引,然後返回到ModelState.Keys [索引註釋]以查看哪個字段導致錯誤。

說實話,一旦你得到了這麼多,你將得到所有需要的信息來排除這類錯誤。我會留給你知道的。