NHibernate-将一个属性映射到两个或多个字段?
我有一个包含两位字段的数据库表:NHibernate-将一个属性映射到两个或多个字段?,nhibernate,mapping,enums,Nhibernate,Mapping,Enums,我有一个包含两位字段的数据库表:IsEvenSide和isodside。我希望将此映射到以下枚举: [Flags] enum SideOfStreet { None, Even, Odd } 我以前做过IUserType,但我不知道如何映射到多个数据库字段 如何做到这一点 注:我正在使用Fluent NHibernate,但我也可以使用hbm解决方案。我只想知道如何转换它。将数据库字段映射到类中的只读属性: Map(x => x.IsEvenSide); Map(x => x.Is
IsEvenSide
和isodside
。我希望将此映射到以下枚举:
[Flags] enum SideOfStreet { None, Even, Odd }
我以前做过IUserType
,但我不知道如何映射到多个数据库字段
如何做到这一点
注:我正在使用Fluent NHibernate,但我也可以使用
hbm
解决方案。我只想知道如何转换它。将数据库字段映射到类中的只读属性:
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和iSeddside的getter,可以将它们标记为private并使用Reveal:
Map(Reveal.Property<Example>("IsEvenSide"));
Map(discover.Property(“IsEvenSide”);
将数据库字段映射到类中的只读属性:
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和iSeddside的getter,可以将它们标记为private并使用Reveal:
Map(Reveal.Property<Example>("IsEvenSide"));
Map(discover.Property(“IsEvenSide”);
哎呀,更正了问题。我从内存中输入了我的问题——真正的系统没有“两个都有”选项,而是使用标志。哎呀,更正了这个问题。我从内存中输入了我的问题——真正的系统没有“两者”选项,而是使用标志。