2

EntityモデルにEnumerationtype プロパティを持つがあります。

私はそれGridviewに anEntityDataSourceをバインドしています。今のところ、すべて問題ありません。

しかし、どのようにWHERE句を指定できますMyEntity.MyEnumPropertyか?

これが私がこれまでに試したことです:

Convert.ToInt32(it.MyEnumProperty) = @MyParam // Does not work
CONVERT(it.MyEnumProperty AS INT) = @MyParam // Still does not work

Int32また、これらの値の両方をDbTypemyに設定しようとしましparamsたが、失敗します。また、コントロールにバインドするか、デフォルト値を指定しようとしましたが、String値をに変換できないと言って常に失敗しMyEnumます。

非常に単純かもしれないことはわかっていますが、Google に関するすべての調査で、これに関する回答は得られませんでした。

4

1 に答える 1

3

非常に単純な最終的に。

最も簡単な方法は、手動でmy where句を指定し、それを変換することでした。私はどこかでこの答えを見つけて、それは不可能だと言っていました。そうではありませんでしたが、以前のバージョンでのみでしたが、EF4で完全に機能します。

これが私のwhere句です:

<asp:EntityDataSource [...]
    Where="CAST(it.MyEnumProperty AS System.Int32) = @MyParamInWhereClauseWith">
    <WhereParameters>
        <asp:Parameter Name="MyEnumProperty" DbType="Int32" DefaultValue="1" />
    </WhereParameters>
</asp:EntityDataSource>
于 2013-01-17T19:42:47.097 に答える