Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我对linq中的find方法感到困惑。进入第三级儿童_C#_Linq_Entity Framework_Linq To Objects_Dbcontext - Fatal编程技术网

C# 我对linq中的find方法感到困惑。进入第三级儿童

C# 我对linq中的find方法感到困惑。进入第三级儿童,c#,linq,entity-framework,linq-to-objects,dbcontext,C#,Linq,Entity Framework,Linq To Objects,Dbcontext,Hello将尽量做到非常具体,因为这对我来说非常重要。 假设您具有以下表结构: 下面的代码使用find方法将数据插入到特定的mvrmed中。find方法查找主键PKMvrMedsId,然后我关联表,如下所示: MvrMed MvrMedsTable = DbCtx.MvrMeds.Find(1); MvrMedsDispensingError DispensingErrorsTable = new MvrMedsDispensingError {

Hello将尽量做到非常具体,因为这对我来说非常重要。 假设您具有以下表结构:

下面的代码使用find方法将数据插入到特定的mvrmed中。find方法查找主键PKMvrMedsId,然后我关联表,如下所示:

            MvrMed MvrMedsTable = DbCtx.MvrMeds.Find(1);
            MvrMedsDispensingError DispensingErrorsTable = new MvrMedsDispensingError { MvrMedsDispensingErrorsNameId=2 };
            MvrMedsAdministrationError AdministrationErrorsTable = new 
            MvrMedsTable.MvrMedsDispensingErrors.Add(DispensingErrorsTable);
            DbCtx.SaveChanges();
但我想知道如何使用Mvrs表执行与上面相同的插入: 我的第一次尝试
我不知道如何在不过度复杂化的情况下处理这个问题。

您的上下文应该有n个Add方法,其中n是模型上的实体数。首先创建新实体来表示需要放入表中的记录,然后使用相应的add方法将它们添加到上下文中。然后通过查找现有记录(通过查找或.where查询)将新记录与现有记录相关联,并使用关联导航属性设置器将记录按其关系绑定在一起。最后调用savechanges

这应该很接近

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();

如何获得AddTo方法?你是说我得写。它不在智能意义上出现。在这个例子中,linq to entities拥有或者说这是新的DbContext,但一般来说,您所说的是。按主id查找一个mvr,然后将其他表添加到其中。对于使用EF 3.5的我来说,这些AddTo方法是为我生成的。显然,这在4.0版本中已被弃用。根据我所读到的,4.0的等价物类似于context.MvrMeds.AddObject(meds);
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();
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();