我目前将Enum作为字符串存储在数据库中。我现在要使用Linq Provider for nHibernate对这个Enum进行wuery和过滤,但我一直有例外。
我尝试将Enum与Enums列表进行比较,尝试过.ToString() 我仍然无法让它发挥作用。
是仅对分离条件有效的自定义约定吗?
答案 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/
希望能帮到你..