NHibernate конвертирует строковые параметры в nvarchar вместо varchar. Как я могу это остановить? - PullRequest
3 голосов
/ 09 февраля 2012

У меня есть класс, сопоставленный с представлением, и я ищу по имени и фамилии, чтобы найти записи пациента. Представление в конечном итоге просматривает поля имени и фамилии в таблице пациента (возможно, и другие, в зависимости от ввода). Когда критерии преобразуются в SQL, он вводит мои строки в качестве параметров nvarchar. Я уже использовал type = "AnsiString" и length = "50" в своем отображении, но он все еще преобразует их в nvarchar, что приводит к снижению производительности в моем запросе.

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

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Попробуйте это

<property name="FirstName" length="50">
    <column name="first_name" sql-type="varchar(50)" />
</property>
2 голосов
/ 09 февраля 2012

Попробуйте использовать атрибут sql-type в ваших сопоставлениях:

<property name="FirstName" length="50" />
    <column sql-type="varchar(50)" />
</property>

Какие проблемы с производительностью возникают у вас? Мне кажется маловероятным, что обработка строк как юникода так сильно повлияет на производительность.

...