Las consultas compiladas y los parámetros & # 8220; no pueden ser secuencias & # 8221;
-
03-07-2019 - |
Pregunta
Pensé que las consultas compiladas realizarían la misma traducción de consulta que DataContext. Sin embargo, recibo un error en tiempo de ejecución cuando intento utilizar una consulta con una llamada al método .Contains. ¿Dónde me he equivocado?
//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);
}
Solución
Este artículo tiene tu respuesta:
Las consultas con parámetros de lista no pueden ser precompilado porque la traducción de La consulta depende del número. de artículos en la lista.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow