MVC: оператор INSERT конфликтовал с ограничением FOREIGN KEY

У меня есть две таблицы, которые должны быть связаны.

Спецификация столов и колонн

Таблица первичных ключей
Категория продукта
ProductCategoryID

Таблица внешних ключей
SubProductCategory2 ProductCategoryID

В контроллере у меня есть следующие методы при создании подкатегории...

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. Поправьте меня, если я ошибаюсь, я неправильно создал связь между двумя таблицами или проблема еще где? Заранее спасибо.

2 ответа

Решение

Я нашел проблему. Это был мой дизайн базы данных sql, а не сторона кодирования MVC. Я удалил столбец CategoryName из таблицы подкатегорий. Я мог бы чувствовать CategoryName, пока Allow Null был установлен в true. Не было никакого смысла в том, чтобы PrimaryKey был правильно настроен для двух таблиц.

Эта ошибка возникает, когда выполняются следующие условия: 1) Значение, выбранное для "ProductCategoryID", отсутствует в таблице "ProductCategory" ИЛИ 2) Таблица категорий продуктов пуста.

Есть ли у вас значения в таблице категорий продуктов?

Какое значение вы выбираете для ProductCategoryID?

Другие вопросы по тегам