Вызывает ли ObjectContext.SaveChanges () размер объекта меньше?

1

У меня есть репозиторий на уровне class и вставка строк в некоторые таблицы с заполнением их полей, я делаю это в for-loop котором есть 10K элементов. Так нет, где еще я называю SaveChanges(). Я думал просто вызвать SaveChanges() один раз в конце for-loop и сохранить их все сразу. Но похоже, что в середине моей программы он работает из памяти и падает. У меня 16 ГБ оперативной памяти, а монитор ресурсов - 42%. Так что, если я вызову SaveChanges() в конце каждого элемента цикла, а не в конце всего цикла, уменьшит ли размер его и поможет ли эта проблема в памяти?

  • 0
    Вы пытались запустить профилировщик, чтобы увидеть, если это так? Я предполагаю, что он не очистит память, поскольку кеширует результаты, но я могу ошибаться.
  • 0
    Некоторый код, показывающий общий поток, был бы хорош.
Показать ещё 1 комментарий
Теги:
entity-framework
entity-framework-4

2 ответа

0
Лучший ответ

Нет, это не спасло бы память. Я предлагаю после каждой итерации вызвать SaveChanges(), установить объект в null и создать новый для следующей итерации так:

foreach(kitten)
{
  myRepo = new Repo();
  //....creating records
  myRepo.SaveChanges()
  myRepo = null;
}
1

1) НЕ вызывать SaveChanges() в конце каждой итерации, она слишком медленная
2) Проверьте это
Когда я должен вызвать SaveChanges() при создании 1000 объектов Entity Framework? (например, во время импорта)
Если вы можете использовать SqlBulkCopy, это очень быстро

Также проверьте, настроено ли ваше приложение на x86, если вы не можете получить доступ к более чем 2 ГБ (на самом деле это меньше)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню