Обновить / Редактировать сущность с отношениями - PullRequest
0 голосов
/ 10 ноября 2019

Я работаю в MVC и создаю некоторые операции CRUD. Я не профессионал, поэтому у меня возникают проблемы при обновлении / редактировании объекта, когда у объекта есть отношение, которое я также хочу обновить. Вот краткое описание таблиц:

У меня есть модель под названием «Пользователь» со следующими свойствами (userId и т. Д.). У меня есть модель под названием «Адрес» со следующими свойствами (addressId,улица, почтовый индекс, город)

У меня есть модель под названием «Дом» со следующими свойствами (StreetNumber, floor, side и два свойства навигации «userid» и «addressId»).

Теперь .. у меня есть viewModel со свойствами из Address и Home .. И я хочу обновить оба, используя эту viewModel. У меня нет проблем, показывающих все данные на мой взгляд. Но я не могу обновить обе сущности одновременно?

Может кто-нибудь привести пример, как это сделать? Могу ли я обновить модель адреса, пройдя через домашнюю модель?

1 Ответ

0 голосов
/ 10 ноября 2019

Было бы проще, если бы вы опубликовали часть своего кода, но я приму то, что у вас есть.

Сначала я обновил бы вашу модель представления и включил id пользователя:

public class UserViewModel
{
  public Guid Id {get;set;}
  public string Name {get;set;}
  public string Surname {get;set;}
  public string City {get;set;}
  public string Address {get;set;}
}

Затем вам просто нужно сопоставить свойства из ViewModel со свойствами модели. Поскольку вы упомянули, что у вас есть некоторые свойства навигации, не составит труда найти адрес пользователя, которого вы хотите обновить.

  public void Update(UserViewModel userVM)
  {
      var user = db.Users.Find(userVM.Id);
      if(user != null)
      {
        user.Name = userVM.Name;
        user.Surname = userVM.Surname;

        var address = user.Address;
        address.City = userVM.City;
        address.Address = userVM.Address;

        db.SaveChanges();
      }
    }

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

Если у вас нет навигационных свойств, просто включите id адреса вашей модели представления, чтобы вы могли найти его так же, как я сделал для пользователя.

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