c# - 映射到 Nhibernate 中的枚举位标志

标签 c# nhibernate

取下面的枚举标志

[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/

相关文章:

postgresql - 从 Postgresql 数据库获取 .Net 中的登录用户

.net - 在 OnPreInsert、OnPreUpdate 中将对象添加到关联

.net - NHibernate SessionFactory 和 EF 4.0 ObjectContext 之间的区别

c# - 更改 Oxyplot 轴线颜色

c# - 讲述人未按预期读取 TextBlock 中的文本。仅在选定的文本框中

c# - 如何实现线程安全列表?

C# - Gtk.ComboBox 不包含 'NewText' 的定义

c# - 当 ViewModel 使用构造函数注入(inject)时,如何在设计时使用 MVVM light 提供虚拟数据?

nhibernate - 为什么我的 Lucene 索引被锁定?

c# - NHibernate 3 Linq 查询缓存