Linq to Sql CompiledQuery ссылается на удаленный DataContext
В нашем серверном приложении на основе.NET 4.6 мы используем множество скомпилированных запросов Linq To Sql. Анализируя мое приложение с помощью dotMemory, я заметил, что некоторые из них имеют ссылку на (теперь расположенный) DataContext, с помощью которого запрос был изначально скомпилирован. Эта ссылка никогда не исчезает.
Сами запросы не сложны. Вот пример:
private static readonly Func<DataContext, int, IQueryable<bool>> _IsEditingAllowed_Anmeldung_CompiledQuery =
CompiledQuery.Compile((DataContext db, int id) =>
db.GetTable<PersonenAnmeldung>()
.Where(p => p.Id1 == id)
.Select(p => p.Status.AllowEdit));
Кратчайший путь такого запроса следующий:
Путь хранения DataContext
Static reference: StatusLogic._IsEditingAllowed_Anmeldung_CompiledQuery ->
Func<DataContext, Int32, IQueryable<Boolean>>._target ->
CompiledQuery.compiled ->
SqlProvider+CompiledQuery.queryInfos ->
SqlProvider+QueryInfo[1] at [0] ->
SqlProvider+QueryInfo.query ->
SqlSelect.selection ->
SqlColumnRef.sourceExpression ->
MethodCallExpressionN._arguments ->
TrueReadOnlyCollection<Expression>.list ->
Expression[2] at [0] ->
LinkedTableExpression.table ->
Table<Status>.context ->
DataContext
У меня вопрос, есть ли какой-нибудь известный способ обойти эту проблему? Это вообще проблема, кроме заполнения памяти неиспользуемым контекстом данных?