Frage

Ich dachte, dass kompilierten Abfragen die gleiche Abfrage Übersetzung als Datacontext durchführen würden. Aber ich bin immer einen Laufzeitfehler, wenn ich versuche, eine Abfrage mit einem .Contains Methodenaufruf zu verwenden. Wo habe ich falsch gegangen?

//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);         
}
War es hilfreich?

Lösung

Dieser Artikel hat Ihre Antwort:

  

Abfragen mit Listenparameter kann nicht sein,   vorkompilierte, weil die Übersetzung von   die Abfrage von der Anzahl abhängig   die Elemente in der Liste.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top