2012-01-27 74 views
1

我想更新一個實體。然而,代碼部分正常工作,它似乎失敗的特定值shopItem.GlaId實體框架4.1。更新實體。這個錯誤信息是什麼意思?

Gla實體確實與儘管失敗的ID存在。

我看不到任何工作值和非工作值之間的差異。懶加載適用於其他屬性,但不適用於Gla屬性。

我得到的錯誤是:

UPDATE語句衝突與外鍵約束「OrderItem_Gla」。衝突發生在數據庫「PPPContext」,表「dbo.Pap」,列'Id'中。

(nb shopItem extends orderItem)。

我無法理解此錯誤消息的含義。

public ActionResult UpdateShopItem(ShopItem shopItem) 
{ 
     var u = db.GetUser(); 
     var dbShopItem = db.ShopItems.Find(shopItem.Id) 
     TryUpdateModel(dbShopItem); 

     db.SaveChanges(); 

回答

1

似乎表「dbo.Pap」具有參考「ShopItems」表。

它似乎shopItem.Id您傳遞 inside public ActionResult UpdateShopItem(ShopItem shopItem)`爲空或空

這裏調試

var u = db.GetUser(); 

,並檢查shopItem


SOLUTION:

確保shopItem有正確的ID或使ShopItem可空對象

ShopItem? shopItem 
Nullable<ShopItem> shopItem 
+0

感謝您的回答,但不是,這不是問題。 – Tom 2012-01-27 01:43:04

+0

只需檢查dbShopItem是否包含所有字段!= null或空...但正如您所說的,也許我們必須知道ShopItem的結構才能使desicion – 2012-01-27 01:46:28

1

的一種愚蠢的錯誤,造成了剪切和粘貼錯字。

在shopItem:

public virtual Pap Gla { get; set; } 

它應該是:

public virtual Gla Gla { get; set; } 

換句話說,我有我的錯性能的一個類型。那麼我希望它能幫助別人!