Linq到NHibernate查询比较映射为整数的枚举成功,但作为等效条件查询失败

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

我正在查询ProductRisk,它包含一个Status属性,其中Status是一个枚举。以下是ProductRisk的映射:

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>();