1

これは私にとって非常に重要なので、こんにちは。次のテーブル構造があるとします。

ここに画像の説明を入力

次のコードは、find メソッドを使用して特定の MvrMeds にデータを挿入します。find メソッドは主キー PKMvrMedsId を検索し、次に示すようにテーブルを関連付けます。

            MvrMed MvrMedsTable = DbCtx.MvrMeds.Find(1);
            MvrMedsDispensingError DispensingErrorsTable = new MvrMedsDispensingError { MvrMedsDispensingErrorsNameId=2 };
            MvrMedsAdministrationError AdministrationErrorsTable = new 
            MvrMedsTable.MvrMedsDispensingErrors.Add(DispensingErrorsTable);
            DbCtx.SaveChanges();

しかし、Mvrs テーブルをどのように使用して上記と同じ挿入を行うのか疑問に思っています。

私の最初の試み

Mvr MvrTable = DbCtx.Mvrs.Find(1).include("MvrMeds").include("MvrMedsAdministrationErrors");//intellisense はこれにノーと言った。

2 回目の試行

Mvr MvrTable = DbCtx.Mvrs.Find(1);
        var query =(from x in  MvrTable.MvrMeds
                      select x);

        MvrMedsDispensingError DispensingErrorsTable1 = new MvrMedsDispensingError { MvrMedsDispensingErrorsNameId = 2 };
        query.MvrMedsDispensingError.add(DispensingErrorsTable1);
        DbCtx.SaveChanges();

そして、これを過度に複雑にすることなくこれにアプローチする方法がわからないことを知っています.

4

1 に答える 1

2

コンテキストには n 個の Add メソッドが必要です。n はモデル上のエンティティの数です。まず、テーブルに入れる必要があるレコードを表す新しいエンティティを作成してから、それぞれの Add メソッドを使用してそれらをコンテキストに追加します。次に、(find または .where クエリを使用して) 既存のレコードを検索して新しいレコードを既存のレコードに関連付け、関連付けナビゲーション プロパティ セッターを使用して、それらの関係によってレコードを結び付けます。最後に、変更の保存を呼び出します。

これはかなり近いはずです...

DbCtx context = new DbCtx();
int mvrId = 100; // pull some mvr based upon id
Mvrs m = context.Mvrs.Where(mv => mv.PKMvrId == mvrId).FirstOrDefault();

// create new entities and add them to the context
MvrMeds meds = MvrMeds.CreateMvrMeds(0);
context.AddToMvrMeds(meds);

MvrMedsDispensingErrors dError = MvrMedsDispensingErrors .CreateMvrMedsDispensingErrors (0);
context.AddToMvrMedsDispensingErrors(dError);

MvrMedsAdministrationErrors aError = MvrMedsAdministrationErrors.CreateMvrMedsAdministrationErrors(0);
context.AddToMvrMedsAdministrationErrors(aError);

// hook everything together
m.MvrMEds = meds;
meds.Mvrs = m;

meds.MvrMedsDispensingErrors.Add(dError);
dError.MvrMeds = meds;

meds.MvrMedsAdministrationErrors.Add(aError);
aError.MvrMeds = meds;


context.SaveChanges();
于 2011-12-09T17:18:36.017 に答える