Свободная проблема NHibernate с nvarchar (max) и SQL Express 2005 - PullRequest
2 голосов
/ 22 февраля 2010

Я недавно обновил NH2.1 до последней сборки ствола. Я также обновил до последнего исходного кода Fluent NHibernate.

Введена новая проблема, которая проявляется в следующем исключении:

System.Data.SqlClient.SqlException: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 3 ("@p0"): Data type 0xE7 has an invalid data length or metadata length.

Мои беглые отображения приводят к следующему hbm xml:

<property name="FirstName" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <column name="FirstName" length="4001" />
</property>

Проблема исчезнет , если я использую 'ntext' для получения следующего отображения:

<property name="FirstName" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <column name="FirstName" sql-type="NTEXT" />
</property>

Если честно, я не уверен, кто / что несет ответственность за проблему. Мой инстинкт подсказывает, что это сам NHibernate, и я смог изолировать проблему с этим конкретным сопоставлением свойств (на самом деле в сопоставляемом объекте есть несколько строк max).

Для дальнейшей сложности проблема не отображается при использовании Sqlite, поэтому я предполагаю, что проблема может быть скрыта в диалекте.

(я хочу установить причину проблемы, прежде чем отправлять сообщения в соответствующую группу пользователей)

Ответы [ 2 ]

2 голосов
/ 23 февраля 2010

Решение на самом деле не является ответом .... но все равно работает. Чтобы исправить проблему, я изменил длину в отображении на 10000. Теперь все работает.

Так что мои отображения теперь будут выглядеть так:

Map(x => x.FirstName).Length(10000);

Иди цифра.

Было бы здорово, если бы кто-то смог пролить свет на эту особенность.

1 голос
/ 22 февраля 2010

В вашем отображении задайте длину свойства строки равной 4001 или выше:

Map(x => x.FirstName).Length(4001);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...