我们会经常有这种需求:把一个字段映射成一个枚举。

于是Nhibernate提供了这种能力,在mapping中不指定type,让NH自己推断就好。于是今天收工(喂。。。

呃。。。继续说。印象中,按照上述方法,NH会往你的char或者varchar字段中存入枚举对应的int值。

于是客户不爽了,他们想看到一个更有意义的字符,甚至字符串。 还好NH提供了两个类:EnumCharType和EnumStringType。

首先来看映射字符的情况,使用EnumCharType<T>还是比较容易的,直接来看NH的Test工程中的例子,entity和枚举定义如下

    public class EnumCharBaz
    {
        
private Int32 id;
        
private SampleCharEnum type;

        
public virtual Int32 Id
        {
            
get { return id; }
            
set { id = value; }
        }

        
public virtual SampleCharEnum Type
        {
            
get { return type; }
            
set { type = value; }
        }
    }

    
public enum SampleCharEnum
    {
        On 
= 'N',
        Off 
= 'F',
        Dimmed 
= 'D'
    }

相关文章: