LinqToSQL InsertOnSubmit和InsertAllOnSubmit的区别
本文关键字:区别 InsertAllOnSubmit InsertOnSubmit LinqToSQL | 更新日期: 2023-09-27 17:51:15
我有一个关于LINQ to SQL的问题。
哪个更快:
public void CreateLocationImages(IEnumerable<LocationImage> list)
{
_db.LocationImages.InsertAllOnSubmit(list);
_db.SubmitChanges();
}
或
public void CreateLocationImages(IEnumerable<LocationImage> list)
{
foreach (LocationImage item in list)
{
_db.LocationImages.InsertOnSubmit(item);
}
_db.SubmitChanges();
}
因为在这两种情况下,您只调用SubmitChanges
一次。这两种代码将产生相同的性能。(如果有任何性能差异应该是可以忽略不计的)如果你的第二个代码段有_db.SubmitChanges();
在for循环中,那么它将是一个单独的连接和插入语句在数据库中。
几乎是一样的,在这种情况下,ILSpy是一个很好的工具
// System.Data.Linq.Table<TEntity>
public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
{
if (entities == null)
{
throw Error.ArgumentNull("entities");
}
this.CheckReadOnly();
this.context.CheckNotInSubmitChanges();
this.context.VerifyTrackingEnabled();
List<TSubEntity> list = entities.ToList<TSubEntity>();
using (List<TSubEntity>.Enumerator enumerator = list.GetEnumerator())
{
while (enumerator.MoveNext())
{
TEntity entity = (TEntity)enumerator.Current;
this.InsertOnSubmit(entity);
}
}
}