に列挙型を参照します。エニュメレーションはEDMXファイルで定義されています。は、どのように私は、次の(簡体字)エンティティSQLクエリを持つエンティティSQL
そのままですが、このクエリは機能しません.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、またはそのようないくつかを見つけることができなかったと言って例外をスロー、動作しませんでした。
は最終的に私は、このような
SELECT VALUE a
FROM Customers AS a
WHERE CAST(a.Status AS System.Int32) NOT IN { 2, 3 }
として、int型にStatus
の鋳造に頼っが、私はもっとエレガントなソリューションを期待していました。
クエリが送信される前に列挙型を(int)にキャストできませんか? –
@DanielLorenzどういう意味ですか?あなたが最後のクエリで見ることができるように、結局それは私がしたことです。 –
自分でSQLを構築しているのですか、またはDbSetを使用していますか?自分でSQLを構築する場合、データベースには列挙型の概念がないため、intを使用する必要があります。 EFはそれをintに変換します。 –