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