Fluent NHibernate正在设置我的列长度不正确。
我做错了什么?
public class ResourceEntryMap : ClassMap<ResourceEntry>
{
public ResourceEntryMap ()
{
CompositeId ()
.KeyProperty (x => x.Culture, set => {
set.ColumnName ("Culture");
set.Length (10);
set.Access.Property ();
})
.KeyProperty (x => x.Name, set => {
set.ColumnName ("Name");
set.Length (100);
set.Access.Property ();
});
Map (x => x.Type).Column ("Type").Length (20);
Map (x => x.Value).Column ("Value").Length (4000).Not.Nullable ();
Table ("ResourceEntry");
}
}
当它创建表格时,我得到了这个
culture character varying(255) NOT NULL,
name character varying(255) NOT NULL,
type character varying(20),
value character varying(4000) NOT NULL,
CONSTRAINT resourceentry_pkey PRIMARY KEY (culture, name)
任何想法?
答案 0 :(得分:1)
这似乎是一个NHibernate错误(参见here),然而一个流利的NHibernate贡献者在那张票中提到它实际上是Fluent NHibernate的一个问题...但它并不是已修复(见bug)
你可以通过使用XML映射来解决这个问题,但是由于Fluent只生成NHibernate消耗的XML,我不确定Fluent的问题是什么(它是&#39; s通过阅读我提到的两个错误,我不清楚。
好消息是,如果排除ColumnName
选项,看起来映射是正确的:
CompositeId ()
.KeyProperty(x => x.Culture, set => {
set.Length(10);
set.Access.Property();
})
.KeyProperty(x => x.Name, set => {
set.Length(100);
set.Access.Property();
});
由于您的媒体资源名称与您的列名相同,因此无论如何都不需要明确设置列名。