Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Entity Framework и сборщик мусора

#c_sharp #net #entity_framework



Собирает ли сборщик мусора, коллекции записей, которые были материализованы EF?
В одном потоке создаются сущности и вставляются в конкурентную очередь, а затем в
другом потоке идет вставка N сущностей в навигационное свойство с последующим SaveChanges.
Объекты уничтожаются после SaveChanges?


Или все привязано к контексту и нужно его пересоздавать?
    


Ответы

Ответ 1



1) Да, конечно. Грубо говоря, сборщик мусора очищает всю память, на которую не указывает ни один указатель в процессе. То есть если вы не храните в переменных ссылки на эти коллекции и контекст БД был "уничтожен", то сборщик мусора очистит память (в удобный для него момент времени). 2) После SaveChanges нет. Все сохраненные сущности останутся в полях Local соответствующих DbSet'ов. Поэтому сборщик мусора не сможет очистить выделенную для них память. Дальше два варианта развития событий: 1) вы забудете о ссылке на DbContext, сборщик мусора уничтожит его, потом уничтожит и сущности. 2) вы не забудете о контексте и вызовите Dispose для него, так как он вам больше не нужен.. тогда метод Dispose уничтожит и контекст и все сущности с ним связанные.

Комментариев нет:

Отправить комментарий