Best way to insert data to multiple table MVC ASP

后端 未结 2 472
無奈伤痛
無奈伤痛 2020-12-28 21:51

I have 4 tables. OperationTable, ClientTable, ClientDetails, OperationRes

ClientTable

  • ClientID
  • Name
  • Surname
  • Birthday
相关标签:
2条回答
  • 2020-12-28 22:06

    Logically, your operation will be exactly same as the tutorial show. only you have to create ViewModel which contains all the 4 table fields.

    Then when the form post back, do your logic of deciding which field in ViewModel goes to which tables' model. Then save that table model.

    In the tutorial it use one ViewModel (LoginViewModel) and save to two table (Login, User). In you case just save to 4 (OperationTable, ClientTable, ClientDetails, OperationRes).

    0 讨论(0)
  • 2020-12-28 22:07

    You want a view model that holds all the data you want to insert, then in your controller create the objects based on that view model and insert using EF. Something like:

    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
    }
    

    Then in your controller, use your ViewModel to populate your entities, then insert using 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();
    
    }
    

    You may want to look at tidying up the entity framework code using a Repository Pattern and you could also look at automapper to map entities from your viewmodel, to save doing it manually.

    0 讨论(0)
提交回复
热议问题