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);         
}
Était-ce utile?

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
scroll top