2009-07-03 22 views
0

関連するデータを一連の入力フィールドに集める単一のページがあります。MVC - 同じページから複数のエンティティにデータを挿入します。

ユーザーがサブミットをクリックすると、データを2つの異なるデータベーステーブルに一度に挿入したいと思います。すなわち、私は最初の挿入から主キーを取得し、それを2番目の挿入操作に使用したいとします。

私はこれをすべて一度にやりたいと思っていますが、MVCのモデル/エンティティでこれを行う最良の方法がわかりません。

答えて

1

LINQまたは他のORMを使用していますか?通常、これらは、関連するエンティティを追加し、外部キー関係を自動的に処理する機能をサポートします。これは自動的にMODELAとmodelBの挿入を処理し、MODELAの主キーがmodelBのための外部キーに正しく設定されていることを確認します

var modelA = new ModelA(); 
var modelB = new ModelB(); 

UpdateModel(modelA, new string[] { "aProp1", "aProp2", ... }); 
UpdateModel(modelB, new string[] { "bProp1", "bProp2", ... }); 

using (var context = new DBContext()) 
{ 
    modelA.ModelB = modelB; 
    context.ModelA.InsertOnSubmit(modelA); 
    context.SubmitChanges(); 
} 

:一般的に、私はLINQtoSQLとするだろうことのようなものです。

もしあなたが手作業でやっているのであれば、まずトランザクション内で3つのステップを実行しなければならないかもしれません。最初にmodelAを挿入し、その挿入からキーを取得してmodelBを更新し、次にmodelBをデータで挿入します。

EDIT:これはUpdateModelを使用して示していますが、メソッドへのパラメータを使用してモデルバインドすることもできます。これは、複数のモデルではややこしいことがあります。接頭辞を別にしてbind属性を使用して、どのモデルにどのフォームパラメータを渡すかを指定する必要があります。

+0

カスタムビジネスオブジェクトでDAABを使用しています。私はそれが難しいかもしれないと感じている – Dkong

関連する問題