2014-11-06 65 views
0

我想用Fluent NHibernate映射一個Oracle表中的PK。 PK是一個字符串(數據庫模式不能更改)。 PK由序列產生。這是一個遺留數據庫,表中沒有觸發器,只有序列。NHibernate映射GeneratedBy.SequenceIdentity(「seq」)其中PK是一個字符串

用流利的NHibernate的,我想

this.Id(x => x.Id) 
    .Column("FOO_ID") 
    .Not.Nullable() 
    .GeneratedBy 
    .SequenceIdentity("SEQ"); 

,但我接受

身份類型必須是整體(的int,long,UINT,ULONG)

因爲SequenceIdentity()檢查價值是一個積分。

如何用字符串PK實現此目的?具有整數ID的相同方法有效。

回答

2

我不知道Oracle支持字符串序列。但無論如何,我不相信NHibernate支持開箱即用的字符串序列。

但是,您可以create your own ID generators in NHibernate

您可能會發現您需要類似於內置SequenceGenerator類的東西,所以我會從該代碼開始,看看您能想出什麼。

2

將溶液

CustomSqlType("VARCHAR2") 

的PK ID映射:

this.Id(x => x.Id) 
    .Column("FOO_ID") 
    .Not.Nullable() 
    .GeneratedBy.Sequence("SEQ_FOO") 
    .CustomSqlType("VARCHAR2"); 
相關問題