関連するデータを一連の入力フィールドに集める単一のページがあります。MVC - 同じページから複数のエンティティにデータを挿入します。
ユーザーがサブミットをクリックすると、データを2つの異なるデータベーステーブルに一度に挿入したいと思います。すなわち、私は最初の挿入から主キーを取得し、それを2番目の挿入操作に使用したいとします。
私はこれをすべて一度にやりたいと思っていますが、MVCのモデル/エンティティでこれを行う最良の方法がわかりません。
関連するデータを一連の入力フィールドに集める単一のページがあります。MVC - 同じページから複数のエンティティにデータを挿入します。
ユーザーがサブミットをクリックすると、データを2つの異なるデータベーステーブルに一度に挿入したいと思います。すなわち、私は最初の挿入から主キーを取得し、それを2番目の挿入操作に使用したいとします。
私はこれをすべて一度にやりたいと思っていますが、MVCのモデル/エンティティでこれを行う最良の方法がわかりません。
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属性を使用して、どのモデルにどのフォームパラメータを渡すかを指定する必要があります。
カスタムビジネスオブジェクトでDAABを使用しています。私はそれが難しいかもしれないと感じている – Dkong