Утилизация Db-соединения для сбора мусора - PullRequest
0 голосов
/ 25 марта 2019

У меня есть консольное приложение c #, которое загружает большой объем данных из файла csv, анализирует его, а затем создает или обновляет записи. Файл содержит тысячи записей, которые создают большие данные .net. ADO.net используется для создания или обновления записи с использованием DbContext.

Использование цикла foreach объектов с данными для создания / обновления приводит к тому, что использование ОЗУ проходит через крышу, и в конечном итоге выдается исключение превышения памяти.

Если я помещаю контекст БД в использование внутри цикла foreach, память управляется GC, и программа запускается без проблем, но я обеспокоен тем, что не всегда целесообразно продолжать создавать новое соединение БД ,

Утечки памяти

using (myEntities db = new myEntities())
{
      db.Database.Connection.ConnectionString = __ConnString;

       foreach (DataRow item in _DataTable.Rows)
        {
           //create / update records
        }
}

не пропускает память

foreach (DataRow item in _DataTable.Rows)
{
     using (myEntities db = new myEntities())
     {
         db.Database.Connection.ConnectionString = __ConnString;
         //create / update records
      }
}

Есть ли обратная сторона наличия db-соединения внутри использования внутри цикла foreach с повторяющимся воссозданием?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...