C# 使用nHibernate Linq提供程序查询存储为字符串的枚举
我目前在数据库中有一个作为字符串保存的枚举。现在,我使用nHibernate的Linq提供程序在这个枚举上查找和过滤什么,但我不断得到异常 我已尝试将枚举与枚举列表进行比较,Twired.ToString() 我仍然无法让它工作C# 使用nHibernate Linq提供程序查询存储为字符串的枚举,c#,nhibernate,linq-to-nhibernate,C#,Nhibernate,Linq To Nhibernate,我目前在数据库中有一个作为字符串保存的枚举。现在,我使用nHibernate的Linq提供程序在这个枚举上查找和过滤什么,但我不断得到异常 我已尝试将枚举与枚举列表进行比较,Twired.ToString() 我仍然无法让它工作 自定义约定是否仅对分离的条件有效?是否使用Fluent NHibernate?如果是,您可以使用用户映射()。。。 此外,确保自动映射不会与Fluent NH冲突,并且正确注册了所有约定 您需要创建一个自定义IUserType来将枚举转换为其字符串表示形式并返回。C#中
自定义约定是否仅对分离的条件有效?是否使用Fluent NHibernate?如果是,您可以使用用户映射()。。。
此外,确保自动映射不会与Fluent NH冲突,并且正确注册了所有约定 您需要创建一个自定义IUserType来将枚举转换为其字符串表示形式并返回。C#中有一个很好的例子 还有一个帖子是相同的:
希望这对您有所帮助。我使用GenericEnumMapper,在链接查询方面从未遇到任何问题
Map(x => x.Status).CustomType<GenericEnumMapper<MerchantStatus>>();
Map(x=>x.Status).CustomType();
不知道如何将其应用于自动映射,因为我很少使用它。也许是这样的
.Override<MerchantStatus>(map =>
{
map.Map(x => x.Status)
.CustomType<GenericEnumMapper<MerchantStatus>>();
});
.Override(映射=>
{
map.map(x=>x.Status)
.CustomType();
});
我们使用的是Fluent nHibernate和Map(),由于我们能够查询实体并保存和填充值,因此约定已正确注册。当我试图查询特定的枚举字段时,这些人就会出现。你有使用fluent nhibernate的示例吗?这是否也适用于。其中(e=>enumCollection.Contains(e.enum))我从未以这种方式使用过它。我刚刚做了一个小测试用例,它正在工作。我正在使用fluent nhibernate 1.2和捆绑的hibernate。数据库后端是postgresql。我来试试。到目前为止,我不得不以各种各样的方式来解决这个问题。谢谢你的指导。