2013-01-08 70 views
0

我使用的是實體framwork和MVC 4(asp.net)一databasefirst方法和現在要做的,然後得到以下錯誤:實體framwork更好的錯誤解釋

The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.

大多數likly我有一個無意的空引用來自於轉換步驟的任何部分(從視圖,視圖模型到通過自動映射器的數據庫對象)。

我想知道的是,如果有一些方法來獲取信息的問題是哪個外鍵導致問題。我試圖追蹤數據庫,但似乎應用程序知道之前試圖保存到數據庫,有問題。我可以以某種方式調試嗎?獲取更多錯誤信息?

回答

0

這些類型的錯誤可能令人沮喪,因爲它們很難追查到。

我會從清除數據庫中的所有數據開始(如果需要備份它)。

然後,在Management Studio中打開數據庫,然後將表拖放到可視化設計器上。然後你會看到關係是什麼樣子的視覺線索。你可能會得到一個驚喜!

0

如果您更改了數據庫架構(模型)並且數據庫中有一些數據,則可能會發生這些類型的錯誤。兩個或兩個以上的表使用外鍵具有關係。

可能的解決方案

下降的數據庫,並再次申請遷移。

+0

丟失數據庫根本就不是解決方案,因爲您丟失了所有數據。相反,您必須通過更新或刪除預約來制定新約束的舊數據。 – Alejandro