2016-07-26 18 views
0

Ich habe eine Spalte für Code in Person Tabelle von Char (4) Typ.Wie den Typ des Parameters in Linq zu Nhibernate Abfrage für Char (*) Typ festlegen?

Tabelle Person ist:

enter image description here

Person Hbm ist:

<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> 

Jetzt habe ich eine Linq zu nhibernate Abfrage haben:

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

Aber Spur von Abfrage in SQL Profiler wird nicht erwartet.

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

Da Art von @p0 nicht char(4) ist und den Wert der @p0 ist N'1234' statt '1234'

und Leistung dieser Abfrage ist niedriger: enter image description here

Was die Ursache ist?

Antwort

0

Sie sollten völlig klar sein, die explizite Typ-Deklaration auslassen. In der Regel müssen Sie den Datentyp nur dann definieren, wenn NHibernate nicht standardmäßig den Datentyp verwendet, den Sie verwenden möchten (bei einigen Varianten von Datums-/Uhrzeitdatentypen üblich).

Verwandte Themen