取下面的枚举标志
[Flags]
enum Permssions
{
CanComment = 1,
CanEdit = 2,
CanDelete = 4,
CanRemoveUsers = 8,
All = CanComment | CanEdit | CanDelete | CanRemoveUsers
}
在 NHibernate 中,我在使用之前映射到一个枚举:
<property type="n.Permssions, n.Permssions"
name="Permssions" column="Permssions"></property>
我的问题是,如何使用 NHibnerate 将按位字段映射到标志字段?
最佳答案
当我映射一个枚举,并且这个枚举有一个“int”类型的支持值时,我只是将我的枚举属性映射到数据库中的一个 int 字段。我没有遇到这个问题。
我也为标志枚举做了这个,这没有问题。
当您组合某些标志时,NHibernate 会将这些标志的“组合”保存到数据库中的指定列中。
当您检索具有“标志枚举”属性的实例时,NHibernate 会将其重新构造回正确的组合。
例如,如果 DB 包含“3”,则 NHibernate 将使用适当值的组合填充您的属性。
事实上,我让 NHibernate 自己解决了这一切:
<property name="OnCallType" column="OnCallType" />
OnCallType 列在我的数据库中是 int 类型,而 OnCallType 属性是具有标志属性的枚举类型。
关于c# - 映射到 Nhibernate 中的枚举位标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672822/