如何存储没有关联表的多个枚举?

时间:2013-03-05 00:01:30

标签: c# nhibernate enums

我想在NHibernate中存储一组enums,可能使用|,以分隔格式存储。我想这样做,也就是说,没有相关的表格(这对我的情况来说太过分了)。

现在,我可以使用enum并存储一个选项(即下拉菜单或单选按钮),没有问题:

public enum Test
{
    Choice1, Choice2, Choice3
}

public virtual Test? TestRadioButtons { get; set }

如果用户选择Choice1,那将由NHibernate保存在数据库中。但是,如果我想要多个选项的选项,使用上面的Test枚举,例如复选框列表,我没有运气:

public virtual List<Test> TestCheckBoxList { get; set; }

public virtual List<string> TestCheckBoxList { get; set; }

将抛出错误(我得到前者的“表不存在”错误,Generic.List与generic.icollection或后者的某些变体)。如果用户从复选框列表中选择“Choice1”和“Choice2”,则仅保存“Choice1”。同样,对于我的情况,创建单独的表是过度的。

是否无法将多个枚举存储为NHibernate中的某种分隔列表?

1 个答案:

答案 0 :(得分:2)

您将需要使用Flag enum,并将组合值作为单个值存储到数据库中。有关示例和解释,请参阅this answer

这将使人类更难阅读,因为我们大多数人不会自动将数字转换为其等效的比特序列。但是,它应该在您的代码中自动进行转换。