Compilado consultas e “parâmetros não podem ser as sequências”
-
03-07-2019 - |
Pergunta
Eu pensei que as consultas compilados iria realizar a mesma tradução consulta como DataContext. No entanto, eu estou recebendo um erro de tempo de execução quando tento usar uma consulta com uma chamada de método .Contains. Onde eu errado se foi?
//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);
}
Solução
Este artigo tem sua resposta:
Consultas com parâmetros lista não pode ser precompilado porque a tradução de a consulta é dependente do número de itens na lista.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow