【问题标题】:Difference between LinqToSQL InsertOnSubmit and InsertAllOnSubmitLinqToSQL InsertOnSubmit 和 InsertAllOnSubmit 的区别
【发布时间】:2013-01-10 17:44:51
【问题描述】:

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

或许没有区别?

【问题讨论】:

    标签: c# linq-to-sql


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      几乎一样,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);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 2011-01-27
        • 1970-01-01
        相关资源
        最近更新 更多