2009-05-31 120 views
0

我目前正在構建一個基於舊數據庫的新應用程序。在應用中,也有不少「清單」表具有以下格式:在NHibernate中映射表枚舉

table listLanguages 
{ 
    PrimaryId bigint; 
    Item varchar(30); 
} 

......像這樣的一些樣本條目:

PrimaryId Item 
1   English 
2   French 
3   Spanish 
... 

他們被用於填充網頁下拉列表表單做了諸如編輯客戶端細節之類的事情當它們保存在客戶記錄中時,將使用完整的字符串值,而不是ID。我必須保持這種行爲。

我的問題是:什麼是最好的方式來映射這些在我的領域模型使用NHibernate?

我不能改變數據庫的結構,並且有很多列表(我會說約40)。

回答

1

這是我在一個項目中所做的: 我爲這些表創建了一個基類,併爲從此基類繼承的每個表創建了一個子類,然後我爲每個表分別創建了映射文件。

儘管我認爲可以有一些更復雜的解決方案,例如使用IInterceptor攔截負載行爲或在運行時使用Configuration類添加一些映射文件,但可以使用一些選項。

+0

是的,我想過,但這是一大堆映射......雖然我猜映射非常簡單。 – cdmckay 2009-05-31 05:41:52

1

我通常使用代碼生成從相關數據庫中的表創建C#枚舉:

public enum Language 
{ 
    NoneSpecified = 0, 
    English  = 1, 
    French  = 2, 
    Spanish  = 3, 
    ... 
} 

看一看T4模板代碼生成,內置到Visual Studio 2005年開始。

+0

不幸的是,這不是一個選項,因爲用戶可以通過Web界面添加他們自己的項目列表。 – cdmckay 2009-05-31 05:40:42