Fehlermeldung "Die LINQ-Ausdruck ein node-type 'Invoke' wird nicht unterstützt LINQ to Entities" in die where-Klausel innerhalb der Methode

Wenn ich meine Abfrage ausführen:

rs.Select(x => x.id).ToArray();

Bekomme diese Fehlermeldung:

Die LINQ-Ausdruck ein node-type 'Invoke' wird nicht unterstützt LINQ to Entities

Dies ist die Methode, die den Fehler generiert (wahrscheinlich func(x)):

public IQueryable<TEntity> Compare<TEntity>(IQueryable<TEntity> source, Func<TEntity, int> func)
{
     IQueryable<TEntity> res = source;

     if (!this.LBoundIsNull) res = res.Where(x => func(x) >= _lBound);
     if (!this.UBoundIsNull) res = res.Where(x => func(x) <= _uBound);

     return res;
}

Ich die Methode aufrufen in diesem Modus:

Document doc = new Document();
doc.Number = new RangeValues(lBound, null);

using (MyEntities db = new MyEntities())
{
    var rs = db.documents;
    if (doc.Number != null) rs = doc.Numero.Compare(rs, x => x.number);

    long[] id = rs.Select(x => x.id).ToArray();
}

Was ist falsch?

  • ist func(x) soll übersetzt werden, um einen Sql-Benutzer definiert funciton Aufruf ?
  • Die Fehlermeldung, die Sie bekommen haben, sagt Ihnen genau, was falsch ist. Aufruf einer Funktion wird nicht unterstützt von EF.
  • jbl, func(x) wird verwendet, um den Wert der Immobilie (in diesem Fall x.number).
  • Sie können es nicht so... Sie hätte tun müssen, einige expression-tree-Sanitär -, es zu tun.
  • LinqKit sollte hier etwas Hilfe : github.com/scottksmith95/LINQKit
  • Könnte gehen Sie einfach auf IEnumerable<TEntity> je nach Leistung.
  • LinqKit ist nicht ein Zauberstab, der Sie schütteln und Magie erscheint... Zeigen, welcher Teil der LinqKit tut, was Gigi gefragt.

InformationsquelleAutor Gigi | 2015-04-09
Schreibe einen Kommentar