2016-07-26 6 views
0

코드 테이블에 char (4) 유형의 열이 있습니다.linq의 매개 변수 유형을 char (*) 유형에 대한 nhibernate 쿼리로 설정하는 방법은 무엇입니까?

Person 테이블은 다음과 같습니다

enter image description here

사람 HBM은 다음과 같습니다 SQL 쿼리의

SessionInstance.Query<Person>() 
       .Where(x => x.Code == "1234") 
       .Select(x => x.Code) 
       .ToList(); 

그러나 추적 :

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain.Model">  
    <class name="Person" table="Person">  

    <property name="Code" >  
     <column name="Code" **sql-type="char(4)"**/>  
    </property> 

    ... 

    </class> 
</hibernate-mapping> 

지금 내가 NHibernate에 쿼리 LINQ를 프로파일 러가 필요하지 않습니다.

exec sp_executesql N'select person_.Code as col_0_0_ from Person person_ where [email protected]',N'@p0 nvarchar(4000)',@p0=N'1234' 

@p0의 유형 char(4)@p0의 값이 N'1234' 대신 '1234'

이며,이 쿼리의 성능이 아니기 때문에이 낮다 : enter image description here

원인이 무엇입니까?

답변

0

명시 적 형식 선언을 생략해도 좋습니다. 보통 당신이 데이터 타입을 정의 할 필요가있는 유일한 시나리오는 Hibernate가 당신이 사용하고자하는 데이터 타입을 기본값으로 가지지 않는 곳이다 (날짜/시간 데이터 타입의 몇몇 변형과 공통적이다).