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?