2012-01-27 79 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; } 

换句话说,我有我的错性能的一个类型。那么我希望它能帮助别人!