Query compilate e & # 8220; I parametri non possono essere sequenze & # 8221;
-
03-07-2019 - |
Domanda
Ho pensato che le query compilate avrebbero eseguito la stessa traduzione delle query di DataContext. Eppure ricevo un errore di runtime quando provo a utilizzare una query con una chiamata al metodo .Contains. Dove ho sbagliato?
//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);
}
Soluzione
Questo articolo ha la tua risposta:
Le query con i parametri dell'elenco non possono essere precompilato perché la traduzione di la query dipende dal numero di elementi nell'elenco.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow