Linq to sql 在LINQ to SQL中,如何使其能够在不保存实体的情况下向实体集合添加项?

Linq to sql 在LINQ to SQL中,如何使其能够在不保存实体的情况下向实体集合添加项?,linq-to-sql,Linq To Sql,我不知道您的初始代码块是否有效,但我猜您必须在提交时将新e2标记为insert。因此: var e1 = new E1(); e1.e2s.Add(new e2()); //e2s is null until e1 is saved, i want to save them all at the same time context.e1s.imsertonsubmit(e1); context.submitchanges(); 很明显,当您创建另一个ctor时,您必须实际调用no arg ct

我不知道您的初始代码块是否有效,但我猜您必须在提交时将新e2标记为insert。因此:

var e1 = new E1();
e1.e2s.Add(new e2()); //e2s is null until e1 is saved, i want to save them all at the same time
context.e1s.imsertonsubmit(e1);
context.submitchanges();

很明显,当您创建另一个ctor时,您必须实际调用no arg ctor,以便ctor中的内容发生

子项将与主项一起保存,如果您为数据类提供这些类之间的关联,甚至可以正确设置标识

为此,您可以向O/R-Designer数据类添加LoadOptions,如下所示:

var e1 = new E1();
var e2 = new e2();
e1.e2s.Add(e2); //e2s is null until e1 is saved, i want to save them all at the same time
context.e1s.insertonsubmit(e1);
context.e2s.insertonsubmit(e2);
context.submitchanges();
MyDataContext mydc=newmydatacontext();
System.Data.Linq.DataLoadOptions lo=new System.Data.Linq.DataLoadOptions();
低负荷(p=>p.e2s);
mydc.LoadOptions=lo;
通过这种方式,LINQ将负责添加子项,您不需要插入并自行提交每个子项。 副作用:加载项时,子项也将被检索

  MyDataContext mydc = new MyDataContext();
  System.Data.Linq.DataLoadOptions lo = new System.Data.Linq.DataLoadOptions();
  lo.LoadWith<E1>(p => p.e2s);
  mydc.LoadOptions = lo;