У меня есть класс, сопоставленный с представлением, и я ищу имена и фамилии для поиска записей пациентов. В итоге в конечном счете рассматриваются поля первого и последнего имени на столе пациента (возможно, другие также зависят от ввода). Когда критерии преобразуются в SQL, он вводит мои строки как параметры nvarchar. Я уже использовал type = "AnsiString" и length = "50" для моего сопоставления, но он все еще преобразует их в nvarchar, что приводит к поражению производительности по моему запросу.NHibernate преобразует строковые параметры в nvarchar вместо varchar. Как я могу остановить это?
<class name="PatientSearchResult" table="vw_PatientSearch" mutable="false" >
<id name="Id" type="Guid" column="PatientId"/>
<property name="MedicalRecordNumber" type="AnsiString" length="50" />
<property name="Title" />
<property name="FirstName" type="AnsiString" length="50" />
<property name="MiddleName" />
<property name="LastName" type="AnsiString" length="50" />
<property name="Nickname" />
<property name="Suffix" />
<property name="DateOfBirth" />
<property name="IsRestricted" />
<property name="IsDeleted" />
<component name="Address">
<property name="StreetAddress1" />
<property name="StreetAddress2" />
<property name="City" />
<property name="State" />
<property name="PostalCode" />
</component>
</class>
SQL Profiler показывает выходной SQL, как с помощью параметров NVARCHAR и префиксов всех моих строк с N, чтобы бросить их.
Я что-то упустил? Есть ли что-то еще, что нужно сделать по критериям или сопоставлению? Кроме того, длина параметров также не является постоянной 50. Я использую NHibernate 2.1.
Спасибо за отзыв. Что касается проблем с производительностью, это результат SQL Server, использующего гораздо более низкий план выполнения, чем тот, который использует мой ручной SQL. Кастинг был красной селедкой. –
Что делать, если тип столбца nvarchar? – numerah
@numerah не уверен, как он отображается в XML, но я бы предположил, что есть также sql-type = "nvarchar (50)". Определенные типы строк ansi и non-ansi определены здесь https://github.com/nhibernate/nhibernate-core/tree/master/src/NHibernate/SqlTypes – AlexCuse