使用 Fluent NHibernate 自动映射字典时,不考虑元素列长度
我正在使用 FluentNHibernate 映射字典,如下所示:
HasMany<MyEntity>(n => n.MyDictionary)
.AsMap<string>(
index => index.Column("LCID").Type<int>(),
element => element.Column("Value").Type<string>().Length(1000)
.Cascade.AllDeleteOrphan();
如您所见,我为元素列“Value”指定列长度。
但是,不考虑指定的元素列长度;当我查看导出的数据库架构(我从映射生成数据库)时,元素列被映射为 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 中的错误还是我做错了什么?
I'm mapping a dictionary using FluentNHibernate like this:
HasMany<MyEntity>(n => n.MyDictionary)
.AsMap<string>(
index => index.Column("LCID").Type<int>(),
element => element.Column("Value").Type<string>().Length(1000)
.Cascade.AllDeleteOrphan();
As you can see, I'm specifying a column length for the element column 'Value'.
However, the specified element column length isn't respected; when I look at the exported database schema (I'm generating the database from my mappings) the element column is mapped as nvarchar(255)
.
The generated HBM seems to be correct:
<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>
Here's the incorrect DDL:
create table MyDictionary_Values
(
MyDictionary_Id INT not null,
Value NVARCHAR(255) null,
LCID INT not null,
primary key (MyDictionary_Id, LCID)
)
Is this a bug in NHibernate or am I doing something wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用此演练:
Use this walkthrough :