Несколько SubmitChanges подряд очень медленно - PullRequest
2 голосов
/ 04 июня 2010

Один вопрос: Почему, когда я использую следующий код

 for (int i = 0; i < 10000; i++)
  {
      Entity e = new Entity();
      e.DisplayValue = i.ToString();
      ctx.Entities.InsertOnSubmit(e);
  }
  ctx.SubmitChanges();

заканчивается через 8 секунд

но когда я использую этот код

 for (int i = 0; i < 10000; i++)
  {
      Entity e = new Entity();
      e.DisplayValue = i.ToString();
      ctx.Entities.InsertOnSubmit(e);
      ctx.SubmitChanges();
  }

заканчивается через 50 секунд

Как я могу сделать более быстрый второй пример, потому что он более удобен для меня?

1 Ответ

2 голосов
/ 04 июня 2010

Каждый раз, когда вы вызываете SubmitChanges, Linq-to-Sql проверяет каждый объект на предмет отслеживаемых изменений, поэтому внесение изменения в 1 объект, а затем повторение этого же изменения 10000 раз и вызов SubmitChanges экспоненциально увеличивают время, необходимое для Linq. -to-Sql для обработки изменений, потому что вы каждый раз добавляете дополнительный элемент.

...