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

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

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

Answer 1

1) Да, конечно. Грубо говоря, сборщик мусора очищает всю память, на которую не указывает ни один указатель в процессе. То есть если вы не храните в переменных ссылки на эти коллекции и контекст БД был "уничтожен", то сборщик мусора очистит память (в удобный для него момент времени).

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

READ ALSO
json.net Как сериализовать такой объект?

json.net Как сериализовать такой объект?

jsonnet обычно сериализует словарь в коллекцию:

258
Один ScrollBar для двух RichTextBox

Один ScrollBar для двух RichTextBox

Можно ли сделать один ScrollBar, который будет прокручивать два RichTextBox? RichTextBox1 - это сам текст, а RichTextBox2 пометки/комментарии к выбранной строке...

241
Метод расширения (ошибка)

Метод расширения (ошибка)

Подскажите, что я делаю не так? (посмотрите изображения ниже)

296
JS+CryptoAPI: как выбрать криптопровайдера?

JS+CryptoAPI: как выбрать криптопровайдера?

Стоит задача: определить из браузера, установлен ли у пользователя криптопровайдеры КриптоПРО CSP или VipNet CSP

297