Сохранять изменения базы данных с помощью asp. net MVC - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в области информационных технологий, в частности, в языке C #, использую ASP. Net MVC framework.

Я работаю над онлайн веб-приложение ресторана, я буду администратором сайта, поэтому я буду управлять любым добавлением ресторанов или меню.

На данный момент я работаю над двумя своими классами Restaurant и Menu, они связаны отношением 1:n, и я использую первый подход к базе данных.

Итак, моя ViewModel Restaurant-Edit имеет коллекцию Menu, а Menu-Edit имеет экземпляр Restaurant в своем коде .

namespace RestaurantProjet3.Models
{
  public class MenuEditee
  {
    public int IdMenu { get; set; }

    public int fk_Resto { get; set; }
    public string NomPlat { get; set; }
    public int Prix { get; set; }
    public string Description { get; set; }
    public string Categories { get; set; }
    public byte?[] Photos { get; set; }

    public virtual Restaurant Restaurant { get; set; }
  }
}

Здесь возникает следующая проблема, я работал на странице редактирования меню моих ресторанов, здесь код

[HttpPost]
public ActionResult Edit_Menu(MenuEditee menuEdit)
{
    if(!ModelState.IsValid)
    {
        return View(menuEdit);
    }

    Menu menuBd = contexteEF.Menu.Single(m => m.IdMenu == menuEdit.IdMenu);
    menuBd = AutoMapper.Mapper.Map<MenuEditee,Menu>(menuEdit,menuBd);

    contexteEF.SaveChanges();
    return null;

Когда я хочу для замены данных, содержащихся в моем comi c, данными, содержащимися в моем ViewModel, возникает исключение, сообщающее мне, что

"System.InvalidOperationException: Операция не удалась: невозможно изменить отношение, потому что один или все иностранные Ключевые свойства n не принимают нулевые значения. При изменении отношения соответствующему свойству внешнего ключа присваивается нулевое значение. Если внешний ключ не поддерживает нулевые значения, необходимо определить новую связь, ненулевое значение должно быть присвоено свойству внешнего ключа или неассоциированный объект должен быть удален "

и я заметил когда я помещаю точку останова в свой код, экземпляр ресторана, содержащийся в моей Menu-Edit ViewModel, возвращает нулевое значение.

Вот почему при отображении его содержимого в Menu, которое находится в моей базе данных, один из Атрибуты Menu-Edit возвращаются пустыми (экземпляр ресторана), что создает исключение.

Что мне делать, чтобы избежать ошибок и, наконец, иметь возможность сохранить свои изменения в базе данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...