Использование статического контекста - плохая практика - вы обнаружили, что он не работает в параллельном сценарии (поскольку контекст не является потокобезопасным), но также имеет другие проблемы .
Вы должны использовать новый экземпляр контекста для каждой единицы работы.Является ли добавление единой записи единицей работы (бизнес-операция / транзакция)?В таком случае вы используете это правильно.Если ваша единица работы добавляет несколько записей или любой другой более сложный сценарий, когда вы вставляете / обновляете / удаляете несколько сущностей, вы должны использовать один экземпляр контекста для всей операции.
Использование нового контекста для операции не должно вызыватьпроблемы с производительностью.Внутри контекста используется некоторое описание сопоставления, которое в любом случае является общим.Могут возникнуть проблемы с большой кучей, но это не будет иметь никакого значения при использовании статического контекста.
Большая куча может произойти из-за утечек памяти, вызванных чаще всего прокси-серверами POCO (либо отслеживание, либо отложенная загрузка).Если вы загружаете сущность из контекста, а затем удаляете контекст без отсоединения сущности, он все равно будет содержать ссылку на контекст, а контекст будет содержать ссылки на все присоединенные сущности = если на основную сущность все еще ссылаются, ни контекст объекта, ни что-либо, на что он ссылаетсямусор собрал.В то же время отсоединение сущности нарушит все отношения, потому что нет «DetachGraph».Вы можете отсоединить сущности один за другим, и EF нарушит навигационные свойства.Я думаю, что это ошибка в Entity Framework и динамических прокси.