2016-07-26 6 views
0

私はPerson(コード)in Personテーブルの列を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

明示的な型宣言を省略しても問題ありません。通常は、データ型を定義する必要がある唯一のシナリオは、使用する予定のデータ型にNHibernateがデフォルトでないところです(日付/時刻データ型のいくつかのバリエーションに共通)。

関連する問題