Недавно я познакомился с разработкой Asp.Net MVC (с использованием MVC 6 и Asp 5).Asp.Net MVC 6 Entity Framework - отношения модели
Я пытаюсь создать связь между 2 классами моделей. Продукт и категория. Продукт относится к категории, и, следовательно, категория может содержать много продуктов.
Это мой код модели:
public class Category
{
public int id { get; set; }
public string name { get; set; }
public virtual ICollection<Product> product { get; set; }
}
public class Product
{
public int id { get; set; }
public string name { get; set; }
public decimal price { get; set; }
public virtual Category category { get; set; }
}
Затем я создал 2 контроллеров из моделей с использованием рамки сущности с видом, а затем я выполнить миграцию. У меня тогда есть операции CRUD для обоих, которые отлично работают, но проблема в том, что я не могу присвоить товар категории. Я могу установить только имя и цену продукта, используя сгенерированные представления.
Надеюсь, что кто-то может помочь. Очевидно, что я ожидаю какой-то раскрывающийся список, который показывает все категории при создании продукта, поэтому я могу связать их вместе.
Спасибо.
* EDIT * ProductsController - метод создания:
// POST: Products/Create
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Product product)
{
if (ModelState.IsValid)
{
_context.Product.Add(product);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
Опять же, обратите внимание, что я не пытаюсь добавить функциональность вручную. Я пытаюсь заставить всю процедуру создания лесов/миграции работать с объектными отношениями, поэтому она может автоматически генерировать ее для меня и ускорять процесс разработки.
* EDIT 2 * Модель продукта был изменен:
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public decimal ProductPrice { get; set; }
[ForeignKey("Category")]
public int CategoryID { get; set; }
public virtual Category category { get; set; }
}
Это теперь будет создать выпадающий список категорий, когда я создаю продукт. ОДНАКО - список пуст, даже если я создаю категорию, поэтому что-то все еще отсутствует? Может быть, модель категории нуждается в дополнительной информации? Это, как он отображает список в ГЭТ создания:
// GET: Products/Create
public IActionResult Create()
{
ViewData["CategoryID"] = new SelectList(_context.Category, "id", "category");
return View();
}
который является только пустой список ... Почти, но не совсем еще.
«Я не могу присвоить товар категории« Как вы попытались назначить его? Включите этот код, пожалуйста, –
. У вашей таблицы продуктов есть столбец CategoryId? –
Как сказал janina, использует CategoryId как внешний ключ. И, пожалуйста, поместите заглавные буквы в свои свойства, это методы, а не переменные. – OrcusZ