Когда я пытаюсь обновить сущность, я получаю сообщение об ошибке:
System.InvalidOperationException: 'Произошло нарушение ограничения ссылочной целостности: значение (я) свойства' Recipe.Id'на одном конце отношения не совпадают значения свойства (ов)' Ingredient.RecipeId 'на другом конце.'
Контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(RecipeEditViewModel viewModel)
{
if (!ModelState.IsValid)
{
return View(viewModel);
}
var recipe = new Recipe()
{
Id = viewModel.Id,
Name = viewModel.Name,
AboutDish = viewModel.AboutDish,
Ingredients = viewModel.Ingredients,
Directions = viewModel.Directions
};
if (viewModel.File != null)
{
// upload file logic
}
_context.Entry(recipe).State = EntityState.Modified; //**Error here**
_context.SaveChanges();
return RedirectToAction("Index", "Home");
}
Классы моделей:
//recipe.cs
public class Recipe
{
public int Id { get; set; }
// Name, etc
[Required]
public virtual ICollection<Ingredient> Ingredients { get; set; }
}
// ingredient.cs
public class Ingredient
{
public int Id { get; set; }
// Name, etc...
public int RecipeId { get; set; }
[ForeignKey(nameof(RecipeId))]
public virtual Recipe Recipe { get; set; }
}
Просмотр модели:
// RecipeEditViewModel.cs
public class RecipeEditViewModel
{
public int Id { get; set; }
// Name, etc...
public ICollection<Ingredient> Ingredients { get; set; }
}