使用nHibernate Linq Provider将查询枚举存储为字符串

时间:2011-08-17 15:32:28

标签: c# nhibernate linq-to-nhibernate

我目前将Enum作为字符串存储在数据库中。我现在要使用Linq Provider for nHibernate对这个Enum进行wuery和过滤,但我一直有例外。

我尝试将Enum与Enums列表进行比较,尝试过.ToString() 我仍然无法让它发挥作用。

是仅对分离条件有效的自定义约定吗?

3 个答案:

答案 0 :(得分:2)

我使用GenericEnumMapper并且从未遇到任何链接查询问题。

Map(x => x.Status).CustomType<GenericEnumMapper<MerchantStatus>>();

不知道如何将此应用于AutoMapping,因为我很少使用它。也许是这样的

.Override<MerchantStatus>(map =>
{
  map.Map(x => x.Status)
    .CustomType<GenericEnumMapper<MerchantStatus>>();
});

答案 1 :(得分:1)

您使用的是Fluent NHibernate吗?如果是这样,您可以使用Map()... 此外,请确保您的自动映射不与Fluent NH冲突,并且您已正确注册所有约定。

答案 2 :(得分:1)

您需要创建自定义IUserType以将枚举转换为其字符串表示形式并返回。在C#here

中有一个很好的例子

还有一个帖子abt相同:http://softwareblog.morlok.net/2009/07/02/mapping-enums-to-custom-strings-in-nhibernate/

希望能帮到你..