LINQ to SQL:InsertOnSubmit()与Add()

kor*_*inp 5 c# sql linq datacontext linq-to-sql

插入新子记录的最佳方法是:使用Add()InsertOnSubmit()?这些方法之间有什么区别吗?

InsertOnSubmit() 例:

using (DataContext db = new DataContext())
{
   Parent p = db.Parents.Where(q => q.ID == SomeID).SingleOrDefault();
   Child c = new Child();
   c.ForeignKeyID = p.ID;
   db.InsertOnSubmit(c);
   db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

Add() 例:

using (DataContext db = new DataContext())
{
   Parent p = db.Parents.Where(q => q.ID == SomeID).SingleOrDefault();
   Child c = new Child();
   p.Add(c);
   db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ike 6

由于您已经具有父ID,因此这样做会更有效:

using(DataContext db = new DataContext())
{
   Child c = new Child();
   c.ForeignKeyID = SomeID;
   db.InsertOnSubmit(c);
   db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

这样,您不必先检索父项,而不必依靠对象跟踪来查找新项。