Ответ 1
Это регрессия. Я поднял ошибку и предоставил исправления на https://nhibernate.jira.com/browse/NH-2484
Я обновил с 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. Это не использовалось в случае предыдущих версий.
Идеи, почему это происходит и как исправить/обменивать его?
Это регрессия. Я поднял ошибку и предоставил исправления на https://nhibernate.jira.com/browse/NH-2484
Я тоже столкнулся с подобной проблемой, и после многих экспериментов я заметил, что при использовании Nhibernate для генерации моей схемы в файл сгенерированный тип столбца всегда был длиной 8000.
Настройка параметра CustomSqlType для Varbinary (max), как было предложено выше, не имело никакого значения, однако эта работа в моем FluentMapping, похоже, сделала трюк:
Map(x => x.LogoBytes).CustomType("BinaryBlob").Length(1048576).Nullable();
Продолжительность курса - это произвольная сумма, но я думаю, что она должна быть установлена на что-то меньшее, чем int.Max. Я новичок в Nhibernate, поэтому я все еще разбираюсь в вещах, но мне было бы интересно узнать, поможет ли это вам.
В версии 3.0.0GA следующее отображение похоже на трюк:
<property name="Data" type="Serializable" length="2147483647" />
Карта (x = > x.Image).Length(100000).Not.Nullable();
Добавьте "Length (MAXVALUE)", как указано выше, и он будет работать:)
Вы пробовали это?
Map(x => x.Image).CustomSqlType("VARBINARY(MAX)");