[英]Fluent NHibernate Composite Id Length set incorrectly
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)
有任何想法嗎?
這似乎是NHibernate的錯誤(請參閱此處 ),但是Fluent NHibernate的貢獻者在該票證中提到這實際上是Fluent NHibernate的問題...但尚未解決(請參見此錯誤 )
您也許可以通過使用XML映射來解決問題,但是由於Fluent只是生成NHibernate消耗的XML,所以我不確定Fluent可能會出什么問題(閱讀這兩個bug尚不清楚。我已經提到過)。
好消息是,如果排除ColumnName
選項,則看起來映射是正確的:
CompositeId ()
.KeyProperty(x => x.Culture, set => {
set.Length(10);
set.Access.Property();
})
.KeyProperty(x => x.Name, set => {
set.Length(100);
set.Access.Property();
});
由於屬性名稱與列名稱相同,因此無論如何都不需要顯式設置列名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.