Подтвердить что ты не робот

Binary Blob усечен до 8000 байт - SQL Server 2008/varbinary (max)

Я обновил с Fluent Nhibernate 1.0 с Nhibernate 2.1 до pre- релиз 1.x с NHibernate 3.0 GA и попал в то, что я считаю регрессией, но я хочу услышать, действительно ли это так.

Я использую SQL Server Express 2008 и диалоги MSSQL 2008 и имею Свойство изображения типа System.Drawing.Image и я сопоставил его как это:

Map (food => food.Image)
 .Length (int.MaxValue)
 .Nullable ();

Столбец Image в таблице имеет тип varbinary(MAX).

Сгенерированный hbm для свойства:

<property name="Image" type="System.Drawing.Image, System.Drawing,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   <column name="Image" length="2147483647" not-null="false" />
</property>`

Однако независимо от того, что я делаю, двоичный blob усечен до 8000 байт при сериализации с текущими версиями FNH и NH. Это не использовалось в случае предыдущих версий.

Идеи, почему это происходит и как исправить/обменивать его?

4b9b3361

Ответ 2

Я тоже столкнулся с подобной проблемой, и после многих экспериментов я заметил, что при использовании Nhibernate для генерации моей схемы в файл сгенерированный тип столбца всегда был длиной 8000.

Настройка параметра CustomSqlType для Varbinary (max), как было предложено выше, не имело никакого значения, однако эта работа в моем FluentMapping, похоже, сделала трюк:

Map(x => x.LogoBytes).CustomType("BinaryBlob").Length(1048576).Nullable();  

Продолжительность курса - это произвольная сумма, но я думаю, что она должна быть установлена ​​на что-то меньшее, чем int.Max. Я новичок в Nhibernate, поэтому я все еще разбираюсь в вещах, но мне было бы интересно узнать, поможет ли это вам.

Ответ 3

В версии 3.0.0GA следующее отображение похоже на трюк:

        <property name="Data" type="Serializable" length="2147483647" />

Ответ 4

Карта (x = > x.Image).Length(100000).Not.Nullable();

Добавьте "Length (MAXVALUE)", как указано выше, и он будет работать:)

Ответ 5

Вы пробовали это?

Map(x => x.Image).CustomSqlType("VARBINARY(MAX)");