Asp.net

將數據插入多個表 MVC ASP 的最佳方法

  • November 27, 2017

我有 4 張桌子。OperationTable、ClientTable、ClientDetails、OperationRes

客戶表

  • 客戶編號
  • 姓名
  • 生日
  • 版本號

客戶詳情

  • 客戶編號
  • 電子郵件
  • 地址
  • 電話

操作表

  • 操作ID
  • 日期
  • 時間
  • 客戶編號

操作資源

  • 資源ID
  • 操作ID
  • 姓名
  • 類型

我有一個頁面,我們要求客戶填寫表格以進行註冊。一切都必須在一頁中,並且在客戶送出表單後,我們必須將所有數據插入到它的表中。日期和時間到 OperationTable,姓名和姓氏到 ClientTable 等等。我是 ASP.NET MVC 的新手。我曾嘗試使用“程式碼優先”。我已經創建了模型,只是用它來自動生成視圖和控制器。但這不是我想要的。我找到了這個教程。有用!但是我有超過 4 個表格,其中的行數比我上面寫的要多。什麼是最好的解決方案?

您需要一個包含所有要插入的數據的視圖模型,然後在您的控制器中創建基於該視圖模型的對象並使用 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以從您的視圖模型映射實體,以節省手動操作。

引用自:https://stackoverflow.com/questions/23429888