2011-03-12 148 views
0

我有兩個應該是相關的表。MVC:INSERT語句與FOREIGN KEY約束衝突

enter image description here

表和Coloums規格

主鍵表
產品分類
ProductCategoryID

外鍵表
SubProductCategory2 ProductCategoryID

在共ntroller我有以下幾種方法創建子類時...

public ActionResult Create() 
{ 
    ViewBag.ProductCategory = db.ProductCategories.OrderBy(p => 
    p.ProductCategoryID).ToList(); 
    ViewBag.SubProductCategory2 = db.SubProductCategory2.OrderBy(a => 
    a.ProductCategoryID).ToList(); 

    var PC2 = new SubProductCategory2(); 
    return View(PC2); 
} 

public ActionResult Create(SubProductCategory2 Createsubcat2, 
FormCollection values) 
{ 
    if (ModelState.IsValid) 
    { 
    db.AddToSubProductCategory2(Createsubcat2); 
    db.SaveChanges(); 
     //error pointing here and the full error message I am getting is... 
    /*error: System.Data.SqlClient.SqlException: 
    * The INSERT statement conflicted with the FOREIGN KEY constraint 
    * "FK_SubProductCategory2_ProductCategory". The conflict occurred in 
    * database "MyHouseDB", table "dbo.ProductCategory", column 
    * 'ProductCategoryID'. The statement has been terminated.*/  
    return RedirectToAction("/"); 
    } 

    ViewBag.ProductCategory = db.ProductCategories.OrderBy(p => 
    p.ProductCategoryID).ToList(); 
    ViewBag.SubProductCategory2 = db.SubProductCategory2.OrderBy(a => 
    a.ProductCategoryID).ToList(); 

    return View(Createsubcat2); 
    } 
ViewBag.ProductCategory = db.ProductCategories.OrderBy(p => 
    p.ProductCategoryID).ToList(); 
    ViewBag.SubProductCategory2 = db.SubProductCategory2.OrderBy(a => 
    a.ProductCategoryID).ToList(); 
    return View(Createsubcat2); 
在我有以下代碼的意見

...

<div class="editor-label"> 
    @Html.LabelForModel() 
</div> 
<div class="editor-field"> 
    @Html.DropDownList("CategoryName", new 
    SelectList((System.Collections.IEnumerable)ViewData["ProductCategory"], 
    "ProductCategoryID", "CategoryName")) 
    @Html.ValidationMessageFor(model => model.ProductCategory.CategoryName) 

一些能告訴我該怎麼解決INSERT語句與FOREIGN KEY約束錯誤消息衝突。糾正我,如果我錯了,我有不正確地創建兩個表之間的關係或其他問題在哪裏?提前致謝。

回答

0

我發現了這個問題。這是我的SQL數據庫設計,而不是MVC編碼方面。我從SubCategory表中刪除了CategoryName列。只要Allow Null設置爲true,我就可以感受到CategoryName。沒有意義的是,這兩個表的PrimaryKey已經正確設置。

1

當以下條件爲真時,會發生此錯誤1)您爲「ProductCategoryID」選擇的值不在「ProductCategory」表中或2)產品類別表爲空。

您是否在產品類別表中有值?

您爲ProductCategoryID選擇了什麼值?

+0

嚴格來說2意味着1 ...這裏的關係意味着「每個SubProductCategory屬於一個ProductCategory」。 因此,如果不設置有效的productCategoryID,則無法創建SubProductCategory。這意味着ProductCategory必須已經存在於表中,所以您必須先創建它。 – Ben

+0

是ProductCategory已經退出下拉列表中顯示的內容。所以我在創建子類別時詢問的問題是爲什麼從下拉菜單中選擇值時數據不會被保存? – DiscoDude

相關問題