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); } } }