仅当您调用 SubmitChanges 时才会生成身份,因此您列出的方法是一个可行的选择。
但是,您可以做的是在另一个对象上设置 FK 对象而不是 ID,LINQ to SQL 将为您解决。
EG:如果 TableA.TableBID 是 TableB.TableBID 的 FK,那么您指的是采取:
TableB b = new TableB();
context.TableB.InsertOnSubmit(b);
context.SubmitChanges();
TableA a = new TableA();
a.TableBID = b.TableBID;
context.TableA.InsertOnSubmit(a);
context.SubmitChanges();
但是您可以通过像这样为 FK 设置对象来在单个提交中完成它:
TableB b = new TableB();
context.TableB.InsertOnSubmit(b);
TableA a = new TableA();
a.TableB = b;
context.TableA.InsertOnSubmit(a);
context.SubmitChanges();
在这个例子中,这在代码方面并没有更短,但它确实只允许你提交一个地方,这在结构上通常是一件好事。