Les requêtes compilées et «Les paramètres ne peuvent pas être des séquences»
-
03-07-2019 - |
Question
Je pensais que les requêtes compilées effectueraient la même traduction de requête que DataContext. Pourtant, je reçois une erreur d'exécution lorsque j'essaie d'utiliser une requête avec un appel de méthode .Contains. Où est-ce que je me suis trompé?
//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);
}
La solution
Cet article a votre réponse:
Les requêtes avec des paramètres de liste ne peuvent pas être précompilé parce que la traduction de la requête dépend du nombre des éléments de la liste.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow