在NHibernate中映射性别(性)属性的最佳方法是什么?

时间:2011-03-25 21:29:09

标签: nhibernate

我的第一个实现是使用完整的实体类来表示性别。然后,我会有一个多对一的关系,例如患者对性别。我看得越多,对我来说就不再适合了,因为性别很快就不会发生变化。而且由于我使用Guid梳子映射主键,因此外键占用了大量空间,在查看原始数据库表时,很难弄清楚Guid代表什么。所以,我想知道其他开发人员如何处理这个和类似的映射(例如颜色)。肯定有些东西经常使用。

1 个答案:

答案 0 :(得分:4)

由于它们是很少改变的属性(没有过于政治,只有2种人类性别),我将它们映射为enum

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

默认情况下,这会将字符串值保存到数据库(即“Unknown”,“Male”或“Female”),因此要保存整数值(即0,1或2),我把它映射为:

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

有时我发现保存字符串值而不是整数更好,所以我相应地在两个映射之间进行操作。