LinqToSQL InsertOnSubmit和InsertAllOnSubmit之间的区别

我有一个关于LINQ to SQL的问题。

什么是更快:

public void CreateLocationImages(IEnumerable list) { _db.LocationImages.InsertAllOnSubmit(list); _db.SubmitChanges(); } 

要么

  public void CreateLocationImages(IEnumerable list) { foreach (LocationImage item in list) { _db.LocationImages.InsertOnSubmit(item); } _db.SubmitChanges(); } 

或者也许没有区别?

因为在这两种情况下,您只调用SubmitChanges 一次 。 这两个代码都会产生相同的性能。 (如果有任何不同的性能可以忽略不计)如果你的第二个代码段有_db.SubmitChanges(); 在for循环中,它将是db中的单独连接和插入语句。

它几乎是一样的, ILSpy在这种情况下是一个很好的工具

 // System.Data.Linq.Table public void InsertAllOnSubmit(IEnumerable entities) where TSubEntity : TEntity { if (entities == null) { throw Error.ArgumentNull("entities"); } this.CheckReadOnly(); this.context.CheckNotInSubmitChanges(); this.context.VerifyTrackingEnabled(); List list = entities.ToList(); using (List.Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext()) { TEntity entity = (TEntity)enumerator.Current; this.InsertOnSubmit(entity); } } }