LinqToSQL InsertOnSubmit和InsertAllOnSubmit之间的区别

时间:2013-01-10 09:37:58

标签: c# linq-to-sql

我有一个关于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();
    }

或者可能没有区别?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

几乎相同,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);
        }
    }
}