0

データベースに整数として永続化される列挙型のフィールドを持つエンティティがあります。

ICriteria を使用してデータベースからオブジェクトを取得するとき、フィールドが列挙値のコレクションのメンバーである結果に制限したいと考えています。Restrictions.In は列挙型のコレクションで動作しますか?

以下は動作しません。クエリの "restrictions.in" 部分で型キャストなどを実行する必要がありますか?

var myEnumCollection = new MyEnum[] { MyEnum.One };
return FindAll<MyType>(Restrictions.In("EnumProperty", myEnumCollection));

FindAll はカプセル化されたメソッドです

criteria.GetExecutableCriteria(Session).List<MyType>()
4

1 に答える 1

0

私の最初の推測では、列挙型メンバーの整数値と比較する必要があるでしょう (列挙型を整数としてマッピングしていると仮定します)。次のようなもの:

var myEnumCollection = new int[] { MyEnum.One }; 
return FindAll<MyType>(Restrictions.In("EnumProperty", myEnumCollection));

あなたが求めている解決策かもしれません。詳細 (enum メンバーとクエリによって生成される sql のマッピング) で投稿を更新すると、さらに支援を提供できる場合があります。

于 2010-09-20T15:22:56.947 に答える