2011-03-25 118 views
0

我的第一個實現是使用完全成長的實體類來表示性別。然後,我會有一個多對一的關係。性別患者。我越是看着這件事,對我來說就越不舒服,因爲性別是不可能很快改變的。而當我使用Guid comb來映射主鍵時,相當多的空間被外鍵佔用,並且在查看原始數據庫表時,很難弄清楚Guid代表什麼。所以,我想知道其他開發人員是如何處理這個和類似的映射(例如顏色)。這肯定是經常使用的東西。什麼是在NHibernate中映射性別(性別)屬性的最佳方式

+0

[性別表是否過於正常化?](http://stackoverflow.com/q/3513606/634872)可能存在重複。 – 2011-03-25 22:12:14

+0

@Florian Lim我之前已經閱讀過這個討論,但據我所知,它根本沒有提及NHibernate。純粹是關於數據庫規範化。 – zszep 2011-03-25 22:20:00

+0

你說得對,它沒有提到NHibernate。但是,「我如何繪製這個圖?」是次要的。這裏的主要問題是「僅僅使用char(1)列還是需要額外的表就足夠了?如果您決定使用單獨的表,映射與其他任何表/如部門或任何其他多對一的關係 – 2011-03-25 22:31:49

回答

4

由於他們屬性很少改變(沒有太政治性,只有2個人類性別),我將它們映射爲enum

public enum Genre 
{  
    Unknown = 0,   
    Male = 1, 
    Female = 2  
} 

默認情況下,這將字符串值保存到數據庫中(即,「未知」,「男」或「女」),所以獲得它保存的整數值(即0,1或2),我將其映射爲:

Map(x => x.Genre).CustomType(typeof(Genre)); 

有時候我發現它更好地保存字符串值,而不是整數,所以,我按了兩個映射之間的兼顧。