C# LINQ to SQL:InsertOnSubmit()vs Add()

C# LINQ to SQL:InsertOnSubmit()vs Add(),c#,sql,linq,linq-to-sql,datacontext,C#,Sql,Linq,Linq To Sql,Datacontext,插入新子记录的最佳方法是什么:使用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

插入新子记录的最佳方法是什么:使用
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();
}
using (DataContext db = new DataContext())
{
   Parent p = db.Parents.Where(q => q.ID == SomeID).SingleOrDefault();
   Child c = new Child();
   p.Add(c);
   db.SubmitChanges();
}
Add()
示例:

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();
}
using (DataContext db = new DataContext())
{
   Parent p = db.Parents.Where(q => q.ID == SomeID).SingleOrDefault();
   Child c = new Child();
   p.Add(c);
   db.SubmitChanges();
}

由于您已经有了父ID,因此执行此操作将更加有效:

using(DataContext db = new DataContext())
{
   Child c = new Child();
   c.ForeignKeyID = SomeID;
   db.InsertOnSubmit(c);
   db.SubmitChanges();
}

这样,您就不会首先检索父对象,而是依靠对象跟踪来查找新项目。

这取决于您-您和您的代码更清楚什么?父对象是如何定义的?@MarcinJuraszek,它看起来像是OP输入了一个错别字,并且正在谈论