Я получаю сообщение об ошибке ниже каждый раз, когда нажимаю кнопку «Добавить продукт». Я был бы очень благодарен за любые советы о том, почему я получаю эту ошибку
SqlException: оператор INSERT конфликтует с ограничением FOREIGN KEY "FK_Products_Categories_CategoryId". Конфликт произошел в базе данных «eCommerce», таблице «dbo.Categories», столбце «CategoryId». Оператор был расторгнут.
Домашний вид:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-controller="Product" asp-action="AddProduct">Add product</a></li>
enter code here
</ul>
</div>
AppDbContext.cs
public class AppDbContext : IdentityDbContext<IdentityUser>
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
Мои модели: модели Product.cs и Category.cs :
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string ShortDescription { get; set; }
public string LongDescription { get; set; }
public decimal Price { get; set; }
public string ImageUrl { get; set; }
public string ImageThumbnailUrl { get; set; }
public bool IsProductOfTheWeek { get; set; }
public bool InStock { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public string Description { get; set; }
public List<Product> Products { get; set; }
}
Мой контроллер: Productontroller.cs
[HttpPost]
public IActionResult AddProduct(Product product)
{
if (ModelState.IsValid)
{
_appDbContext.Products.Add(product);
_appDbContext.SaveChanges();
return RedirectToAction("SeedComplete");
}
return View(product);
}
public IActionResult SeedComplete()
{
ViewBag.SeedCompleteMessage = "Thanks for adding the product!";
return View();
}
Мой взгляд: AddProduct.cs html
@model Product
<form asp-action="AddProduct" method="post" class="form-horizontal" role="form">
<h4>You're just one step away.</h4>
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Price" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="Price" class="form-control" />
<span asp-validation-for="Price" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="ShortDescription" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="ShortDescription" class="form-control" />
<span asp-validation-for="ShortDescription" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="LongDescription" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="LongDescription" class="form-control" />
<span asp-validation-for="LongDescription" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="ImageUrl" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="ImageUrl" class="form-control" />
<span asp-validation-for="ImageUrl" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="ImageThumbnailUrl" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="ImageThumbnailUrl" class="form-control" />
<span asp-validation-for="ImageThumbnailUrl" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="IsProductOfTheWeek" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="IsProductOfTheWeek" class="form-control" />
<span asp-validation-for="IsProductOfTheWeek" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="InStock" class="col-md-2 control-label"></label>
<div class="col-md-5">
<input asp-for="InStock" class="form-control" />
<span asp-validation-for="InStock" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-5">
<input id="btn" type="submit" class="btn btn-primary" value="Complete the seed" />
</div>
</div>
</form>
SeedComplete.cs html:
<h1>@ViewBag.SeedCompleteMessage </h1>