2014-05-02 37 views
10

我有4個表格。 OperationTable,ClientTable,ClientDetails,OperationRes將數據插入多表MVC ASP的最佳方法

ClientTable

  • 客戶端ID
  • 名稱
  • 生日
  • VerNumber

ClientDetails

  • 的ClientID
  • 電子郵件
  • ADRESS
  • 電話

OperationTable

  • OperationID
  • 日期
  • 時間
  • 客戶端ID

OperationRes

  • 渣油
  • OperationID
  • 名稱
  • 類型
  • 沒有

我有頁我們要求客戶填寫表格以註冊smth。一切都必須在一個頁面中,並且在客戶提交表格之後,我們必須將所有數據插入到它的表格中。操作表的日期和時間,姓名和姓氏到ClientTable等等。 我是ASP.NET MVC中的新成員。我曾嘗試使用「代碼Fisrt」。我創建了模型,並用它來自動生成視圖和控制器。但這不是我想要的。我發現這個Tutorial。有用!但我有超過4個表格,比我上面寫的更多。什麼是最好的解決方案?

回答

16

你想要一個視圖模型來保存你想要插入的所有數據,然後在你的控制器中創建基於該視圖模型的對象並使用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 
} 

然後在你的控制器,使用您的視圖模型來填充你的實體,然後插入使用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(); 

} 

你可能想看看的整理使用Repository Pattern實體框架代碼並且您還可以查看automapper以從您的視圖模型映射實體,以節省手動操作。

+0

非常感謝您的詳細解答。如果MyViewModel增長,這是正常的。 1)姓名2)姓氏3)生日... 50)沒有。或者除了創建視圖模型之外還有其他解決方案在此先感謝 – DSI

+1

如果您希望用戶輸入/編輯來自不同表格的數據,那麼您肯定需要一個視圖模型,由於過度定位攻擊,還有使用視圖模型而不是實體的安全優勢。 – LightningShield

+0

你好,從多表顯示數據呢? – DSI

3

從邏輯上講,您的操作將與教程節目完全相同。只有您必須創建包含所有4個表格字段的ViewModel。

然後,當表單發回時,請確定您決定ViewModel中的哪個字段轉到哪個表的模型的邏輯。然後保存該表模型。

在教程中,它使用一個ViewModel(LoginViewModel)並保存到兩個表(Login,User)。在你的情況下,只需保存到4(OperationTable,ClientTable,ClientDetails,OperationRes)。

相關問題