实体ObjectDatasource和枚举类型字段的where子句

时间:2013-01-16 17:39:10

标签: c# asp.net entity-framework

我的模型中有Entity,其Enumeration类型属性。

我正在将GridviewEntityDataSource绑定到它。到现在为止,一切都很好。

但是如何在WHERE上指定MyEntity.MyEnumProperty条款?

这是我到目前为止所尝试的内容:

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

我还试图将Int32设置为DbType params这两个值,但它失败了。此外,我尝试将其绑定到控件或指定默认值,但始终无法将String值转换为MyEnum

我知道这可能很简单,但我对谷歌的所有研究都没有回答这个问题。

1 个答案:

答案 0 :(得分:3)

非常简单。

最简单的方法是指定manualy我的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>