次の(簡略化された)Entity SQLクエリがあります。
SELECT VALUE a
FROM Customers AS a
WHERE a.Status NOT IN { 2, 3 }
プロパティはStatus
列挙型で、 と呼びますCustomerStatus
。列挙は EDMX ファイルで定義されます。
このままでは、このクエリは機能せず、CustomerStatus が Int32 と互換性がないという例外がスローされます (基になる型はint です)。IN {}
しかし、列挙名の前に付けた名前空間に関係なく、句の CustomerStatus 値のリストを定義する方法が見つかりませんでした。例えば、
SELECT VALUE a
FROM Customers AS a
WHERE a.Status NOT IN { MyModelEntities.CustomerStatus.Reject, MyModelEntities.CustomerStatus.Accept }
コンテナー内に MyModelEntities.CustomerStatus が見つからないなどの例外をスローして、機能しませんでした。
Status
最終的に、次のように intにキャストすることにしました。
SELECT VALUE a
FROM Customers AS a
WHERE CAST(a.Status AS System.Int32) NOT IN { 2, 3 }
しかし、私はよりエレガントなソリューションを望んでいました。