Я сопоставляю словарь с помощью FluentNHibernate следующим образом:
HasMany<MyEntity>(n => n.MyDictionary)
.AsMap<string>(
index => index.Column("LCID").Type<int>(),
element => element.Column("Value").Type<string>().Length(1000)
.Cascade.AllDeleteOrphan();
Как видите, я указываю длину столбца для столбца элемента «Значение».
Однакоуказанная длина столбца элемента не соблюдается;когда я смотрю на экспортированную схему базы данных (я генерирую базу данных из моих сопоставлений), столбец элемента отображается как nvarchar(255)
.
Сгенерированный HBM кажется правильным:
<map table="MyDictionary_Values" name="MyDictionary" mutable="true"
cascade="all-delete-orphan">
<key>
<column name="MyDictionary_id"/>
</key>
<index type="int">
<column name="LCID"/>
</index>
<element type="string" length="1000">
<column name="Value"/>
</element>
</map>
Вот неправильный DDL:
create table MyDictionary_Values
(
MyDictionary_Id INT not null,
Value NVARCHAR(255) null,
LCID INT not null,
primary key (MyDictionary_Id, LCID)
)
Это ошибка в NHibernate или я что-то не так делаю?