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
왜 그럴까요? 모든 도움을 미리 감사드립니다.
당신이''CustomType을 제거 시도? 나는 그것이 필요하다고 생각하지 않는다. –