Linq到NHibernate查询比较映射为整数的枚举成功,但作为等效条件查询失败
我正在查询ProductRisk,它包含一个Status属性,其中Status是一个枚举。以下是ProductRisk的映射:Linq到NHibernate查询比较映射为整数的枚举成功,但作为等效条件查询失败,nhibernate,linq-to-nhibernate,nhibernate-criteria,Nhibernate,Linq To Nhibernate,Nhibernate Criteria,我正在查询ProductRisk,它包含一个Status属性,其中Status是一个枚举。以下是ProductRisk的映射: public class ProductRiskMap : ClassMap<ProductRisk> { public ProductRiskMap() { Table("AccountManagement.dbo.ProductRisk"); Id(x => x.Id, "ProductRiskID
public class ProductRiskMap : ClassMap<ProductRisk>
{
public ProductRiskMap()
{
Table("AccountManagement.dbo.ProductRisk");
Id(x => x.Id, "ProductRiskID");
References(x => x.AssociatedProduct, "ProductID");
References(x => x.AssociatedClient, "EntityId");
Map(x => x.Reason, "ProductRiskReasonID").CustomType<int>();
Map(x => x.Status, "RiskStatusID").CustomType<int>();
}
但如果我在Criteria API中使用(我认为是)等效查询:
return NHibernateSession.Current.QueryOver<ProductRisk>()
.WhereRestrictionOn(x => x.AssociatedClient.Id).IsIn(clientIds)
.Where(x => x.Status == RiskStatus.Medium || x.Status == RiskStatus.High)
.List();
返回NHibernateSession.Current.QueryOver()
.WhereRestrictionOn(x=>x.AssociatedClient.Id).IsIn(clientId)
其中(x=>x.Status==RiskStatus.Medium | | x.Status==RiskStatus.High)
.List();
我收到以下错误:
NHibernate.Criteria.SimpleExpression中的类型不匹配:状态
预期类型System.Int32,实际类型
FIS.AccountManagement.Core.Domain.RiskStatus
为什么呢?提前感谢您的帮助 当我想将枚举映射到FluentNH中的INT时,我将枚举指定为自定义类型,然后应该这样做:
Map(x => x.Status, "RiskStatusID").CustomType<RiskStatus>();
Map(x=>x.Status,“RiskStatusID”).CustomType();
您是否尝试过删除CustomType
?我觉得没必要。
Map(x => x.Status, "RiskStatusID").CustomType<RiskStatus>();