1

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

または多分違いはありませんか?

4

2 に答える 2

2

どちらの場合も、一度SubmitChangesしか呼び出していないためです。どちらのコードも同じパフォーマンスになります。(無視できるはずのパフォーマンスの違いがある場合) 2 番目のコード セグメントがfor ループ内にある場合、それは別の接続になり、データベースにステートメントを挿入します。_db.SubmitChanges();

于 2013-01-10T09:42:45.613 に答える
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);
        }
    }
}
于 2013-01-10T09:41:48.870 に答える