Лучший способ вставить данные в несколько таблиц MVC ASP

У меня есть 4 таблицы. OperationTable, ClientTable, Юридическим Лицом;, OperationRes

ClientTable

  • ClientID
  • имя
  • фамилия
  • день рождения
  • VerNumber

юридическим лицом;

  • ClientID
  • электронная почта
  • адрес
  • телефон

OperationTable

  • OperationID
  • дата
  • времени
  • ClientID

OperationRes

  • ResID
  • OperationID
  • имя
  • тип
  • нет

У меня есть страница, где мы просим клиента заполнить форму для регистрации на smth. Все должно быть на одной странице и после того, как клиент отправляет форму, мы должны вставить все данные в таблицу. Дата и время для OperationTable, имя и фамилия для ClientTable и так далее. Я новичок. ASP.NET MVC. я попытался использовать "код Fisrt". Я создал модель и просто использовал ее для автогенерации представления и контроллера. но это не то, чего я хочу. я нашел это!--55-->учебник. работает! Но у меня больше 4 столов и больше строк, чем я пишу выше. что является лучшим решением?

2 ответов


вы хотите модель представления, которая содержит все данные, которые вы хотите вставить, затем в контроллере создайте объекты на основе этой модели представления и вставьте с помощью EF. Что-то вроде:

public class MyViewModel
{
    public string Name {get; set;}
    public string Birthday {get; set;}
    public string VerNumber { get; set;}
    public string Email {get; set;}
    public string Address {get; set;}
    // etc etc for the rest of your data
}

затем в контроллере используйте ViewModel для заполнения ваших объектов, а затем вставьте с помощью EF:

[HttpPost]
public ActionResult Add(MyViewModel model)
{
     var client = new Client{
          Name = model.Name,
          Birthday = model.Birthday
     };

     var clientDetails = new ClientDetails();

     //etc for your other entities

     using (var context = new MyDbContext)
     {
          context.Clients.Add(client);
          clientDetails.ClientId = client.Id;
          context.ClientDetails.Add(clientDetails);
          //etc add your other classes
          context.SaveChanges();

     }

     //whatever you want to do here for the result, maybe direct to new controller
     //or return view
     return View();

}

вы можете посмотреть на очистку кода Entity framework с помощью Шаблон Репозитория и вы также можете посмотреть на automapper на карте сущности из вашей viewmodel, чтобы сохранить это вручную.


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

затем, когда форма post back, сделайте свою логику решения, какое поле в ViewModel переходит к модели таблиц. Затем сохраните эту модель таблицы.

в учебнике он использует один ViewModel (LoginViewModel) и сохранить в две таблицы (логин, пользователь). В случае, если вы просто сохранить на 4 (OperationTable, ClientTable, юридическим лицом;, OperationRes).