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 对此说不。

第二次尝试

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 回答