2011-11-11 7 views
4

Status가 enum 인 Status 속성이 포함 된 ProductRisk를 쿼리하고 있습니다. ProductRisk에 대한 매핑은 다음과 같습니다.Linq가 정수로 매핑 된 enum을 성공했지만 동일한 조건 쿼리와 비교할 때 쿼리를 수행합니다.

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

상태는 네 가지 값으로 된 enum입니다. 조회 테이블에 대한 외래 키 참조로 데이터베이스에 표시됩니다. 내 저장소에서 Status : Medium 또는 High 인 ProductRisk 개체를 가져 오려고합니다. [기준 API에 해당하는 쿼리

public IList<ProductRisk> GetByClient(int[] clientIds) 
    { 
     return NHibernateSession.Current.Query<ProductRisk>() 
      .Where(x => clientIds.Contains(x.AssociatedClient.Id)) 
      .Where(x => x.Status == RiskStatus.Medium || x.Status == RiskStatus.High)     
      .ToList(); 
    } 

을하지만 사용하는 경우 (내가 생각하는 것은) :

 return NHibernateSession.Current.QueryOver<ProductRisk>() 
      .WhereRestrictionOn(x => x.AssociatedClient.Id).IsIn(clientIds) 
      .Where(x => x.Status == RiskStatus.Medium || x.Status == RiskStatus.High) 
      .List(); 

나는 다음과 같은 오류가 나타납니다

를 링으로 자 NHibernate에서 다음 쿼리 작동

Type mismatch in NHibernate.Criterion.SimpleExpression: Status expected type System.Int32, actual type FIS.AccountManagement.Core.Domain.RiskStatus

왜 그럴까요? 모든 도움을 미리 감사드립니다.

+0

당신이''CustomType 을 제거 시도? 나는 그것이 필요하다고 생각하지 않는다. –

답변

4

내가 FluentNH에서의 int에 열거를 매핑 할 내가 정의 유형으로 열거를 지정 다음이 수행해야합니다

Map(x => x.Status, "RiskStatusID").CustomType<RiskStatus>();