我有一个包含两位字段的数据库表:IsEvenSide
和IsOddSide
。我想将其映射到以下枚举:
[Flags] enum SideOfStreet { None, Even, Odd }
我过去做过IUserType
,但我不知道如何映射到多个数据库字段。
如何做到这一点?
P.S。:我正在使用Fluent NHibernate,但我也可以使用hbm
解决方案。我只想弄清楚如何转换它。
答案 0 :(得分:1)
将数据库字段映射为只读类中的属性:
Map(x => x.IsEvenSide);
Map(x => x.IsOddSide);
通过公共财产控制它们:
[使用标志枚举的修订版]
public class Example
{
public IsEvenSide { get; private set; }
public IsOddSide { get; private set; }
public SideOfStreet SideOfStreet
{
get
{
var side = SideOfStreet.None;
if (IsEvenSide) { side |= SideOfStreet.Even; }
if (IsOddSide) { side |= SideOfStreet.Odd; }
return side;
}
set
{
IsEvenSide = (value & SideOfStreet.Even) == SideOfStreet.Even;
IsOddSide = (value & SideOfStreet.Odd) == SideOfStreet.Odd;
}
}
}
如果您不想公开IsEvenSide和IsOddSide的getter,可以将它们标记为私有并使用Reveal:
Map(Reveal.Property<Example>("IsEvenSide"));