我们会经常有这种需求:把一个字段映射成一个枚举。
于是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'
}
{
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'
}