Ich habe folgende (vereinfachte) Entity SQL-Abfrage verweisen. Die Aufzählung ist in der EDMX-Datei definiert.Wie Aufzählungstyp in Entity SQL
Wie es ist, funktioniert diese Abfrage nicht, eine Ausnahme zu dem Effekt verursachend, dass CustomerStatus mit Int32 nicht kompatibel ist (sein zugrundeliegender Typ ist Int). Ich konnte jedoch keine Möglichkeit finden, eine Liste von CustomerStatus-Werten für die IN {}
-Klausel zu definieren, unabhängig davon, welchen Namespace dem Namen der Aufzählung vorangestellt wurde. Zum Beispiel
SELECT VALUE a
FROM Customers AS a
WHERE a.Status NOT IN { MyModelEntities.CustomerStatus.Reject, MyModelEntities.CustomerStatus.Accept }
funktionierten nicht, eine Ausnahme zu werfen sagen, es ist nicht MyModelEntities.CustomerStatus in dem Behälter, oder so finden.
Schließlich griff ich die Status
zu Casting für eine elegantere Lösung in int, wie
SELECT VALUE a
FROM Customers AS a
WHERE CAST(a.Status AS System.Int32) NOT IN { 2, 3 }
aber ich hatte gehofft.
Können Sie nicht einfach die Enumeration (int) vor der Abfrage gesendet werden? –
@DanielLorenz was meinst du? Wie Sie in der letzten Abfrage sehen können, habe ich es schließlich getan. –
Bauen Sie das SQL selbst oder verwenden Sie ein DbSet? Wenn Sie das SQL selbst erstellen, müssen Sie ein int verwenden, da die Datenbank kein Enum-Konzept hat. EF übersetzt das zu einem int. –