2014-07-23 2 views
0

수량 열은 정수입니다. Like를 사용하고 싶습니다. 그런 다음 해당 유형을 문자열로 변환하려고합니다. NHibernate 투영. 사용자 정의 유형에 캐스트

이 작업을 수행하기 위해 내가 사용

Expression.Like(
Projections.Cast(NHibernateUtil.String, 
Projections.Property<ErrorSummaryEntity>(x => x.Quantity)), 
searchValue, MatchMode.Anywhere) 

그것의 거의 작동합니다. 그것은 이렇게 SQL을 생성합니다.

cast(this_.ILOSC as NVARCHAR2(255)) like :p1 

여기서 문제 N VARCHAR이다. 대신 VARCHAR을 가져와야합니다.

어떻게받을 수 있습니까? 도움이 될 cast(this_.ILOSC as VARCHAR2(255)) like :p1

두 번째 질문은 나는이 같은 매핑이있는 경우 : 내가 람다를 사용하는 이유

Map(x => x.Quantity) .Column("ILOSC")

그게이 칼럼에서 작동 할 수 있습니다. 매핑 된 열 이름을 검색 할 수 있습니까?

var colName = //some action to return "ILOSC"

Projections.Property<ErrorSummaryEntity>(x => x.Quantity) 나에게 "수량"을 제공합니다. "ILOSC"를 어떻게 얻을 수 있습니까?

내가이 열 이름을 얻는 경우에 내가 사용할 수 있습니다 당신은 우리가 사용하는이 단지 대신 NHibernateUtil.String의 거의가 Expression.Sql().

답변

0

: NHibernateUtil.AnsiString

Expression.Like(
    // Projections.Cast(NHibernateUtil.String, 
    Projections.Cast(NHibernateUtil.AnsiString, 
    Projections.Property<ErrorSummaryEntity>(x => x.Quantity)), 
     searchValue, MatchMode.Anywhere) 

참조 : 5.2.2. Basic value types

관련 문제