使用nHibernate Linq Provider查询存储为字符串的枚举
本文关键字:字符串 枚举 存储 查询 nHibernate Linq Provider 使用 | 更新日期: 2023-09-27 18:05:47
我目前有一个枚举被保存为数据库中的字符串。我现在使用nHibernate的Linq提供程序对这个Enum进行查询和过滤,但我一直得到异常。
我已经尝试将Enum与枚举列表进行比较,尝试.ToString()但我还是不能让它工作。
自定义约定只对Detached Criteria有效吗?
我使用GenericEnumMapper,从来没有链接查询的任何问题。
Map(x => x.Status).CustomType<GenericEnumMapper<MerchantStatus>>();
不确定如何将其应用于AutoMapping,因为我很少使用它。也许像这样
.Override<MerchantStatus>(map =>
{
map.Map(x => x.Status)
.CustomType<GenericEnumMapper<MerchantStatus>>();
});
你正在使用Fluent NHibernate吗?如果是,您可以使用Map()…此外,请确保您的Automapping不会与Fluent NH冲突,并且您正确地注册了所有约定。
您需要创建一个自定义IUserType来将枚举转换为其字符串表示形式并返回。c#中有一个很好的例子
还有一个相同的帖子:http://softwareblog.morlok.net/2009/07/02/mapping-enums-to-custom-strings-in-nhibernate/