Mein Problem ist, ich muss den Wert einer Eigenschaft in einer generischen Klasse abfragen. Die Eigenschaft ist mit einem Attribut gekennzeichnet.LINQ to Entities erkennt die Methode 'System.Object GetValue (...)'
Siehe den folgenden Code:
var rowKeyProperty = EFUtil.GetClassPropertyForRowKey<T>();
var tenantKeyProperty = EFUtil.GetClassPropertyForTenantKey<T>();
var queryResult =
objContext.CreateObjectSet<T>().Single(l => (((int) tenantKeyProperty.GetValue(l, null)) == tenantKey) &&
(((int)rowKeyProperty.GetValue(l, null)) == KeyValue));
Die rowKeyProperty und tenantKeyProperty sind vom Typ System.Reflection.PropertyInfo.
Ich verstehe, warum ich den Fehler bekomme. Wenn die linq-Abfrage in SQL übersetzt wird, kann sie die property.GetValue nicht verstehen.
Allerdings bin ich völlig ratlos, was die Arbeit hier angeht. Hat jemand Ideen, wie man das erreicht? Danke.
Die einzige Möglichkeit, EF-kompatible Abfragen mithilfe von reflektierten Eigenschaften zu erstellen, besteht darin, die Ausdrucksbäume selbst zu erstellen. –
Wie bestimmen Sie, welche Eigenschaften Sie benötigen? – Servy
Der Eigenschaft ist ein Attribut zugeordnet. Ich rufe ein attribute.isdefined zurück und trage die Eigenschaft mit dem wahr. –