Скомпилированные запросы и & # 8220; параметры не могут быть последовательностями & # 8221;
-
03-07-2019 - |
Вопрос
Я думал, что скомпилированные запросы будут выполнять тот же перевод запросов, что и DataContext. Тем не менее, я получаю ошибку во время выполнения, когда пытаюсь использовать запрос с вызовом метода .Contains. Где я ошибся?
//private member which holds a compiled query.
Func<DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
compiledFiftyRecordQuery = System.Data.Linq.CompiledQuery.Compile
<DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
((dc, ids) => dc.TestRecords.Where(tr => ids.Contains(tr.ID)).ToList());
//this method calls the compiled query.
public void FiftyRecordCompiledQueryByID()
{
List<int> IDs = GetRandomInts(50);
//System.NotSupportedException
//{"Parameters cannot be sequences."}
List<DataAccess.TestRecord> results = compiledFiftyRecordQuery
(myContext, IDs);
}
Решение
Эта статья есть ваш ответ:
Запросы с параметрами списка не могут быть предварительно скомпилированы, потому что перевод запрос зависит от числа элементов в списке.
Не связан с StackOverflow