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

У меня 4 таблицы. OperationTable, ClientTable, ClientDetails, OperationRes

ClientTable

  • ClientID
  • Имя
  • Фамилия
  • День рождения
  • VerNumber

ClientDetails

  • ClientID
  • Email
  • Адрес
  • Телефон

OperationTable

  • OperationID
  • Дата
  • Время
  • ClientID

OperationRes

  • RESID
  • OperationID
  • Имя
  • Тип
  • Нет

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

Ответ 1

Вы хотите, чтобы модель представления содержала все данные, которые вы хотите вставить, а затем в контроллере создайте объекты на основе этой модели представления и вставьте их с помощью 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();

}

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

Ответ 2

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

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

В учебнике используется один ViewModel (LoginViewModel) и сохраняется до двух таблиц (Login, User). В этом случае просто сохраните до 4 (OperationTable, ClientTable, ClientDetails, OperationRes).