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

本文关键字:关联 枚举 何存储 存储 | 更新日期: 2023-09-27 18:02:28

我想在NHibernate中存储一组enums,可能以分隔格式使用|,。我希望它是平面的,也就是说,没有关联的表(这对我的情况来说是多余的)。

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

public enum Test
{
    Choice1, Choice2, Choice3
}
public virtual Test? TestRadioButtons { get; set }

如果用户选择Choice1,它将被NHibernate保存在数据库中。但是如果我想要多个选择的选项,使用上面的Test enum,比如一个复选框列表,我就没有运气了:

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

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

将抛出错误(对于前者,我得到一个"表不存在"错误,而Generic。列表vs.通用。(集合或后者的一些变体)。如果用户从复选框列表中选择了"Choice1"answers"Choice2",则只保存"Choice1"。同样,对于我的情况,创建单独的表是多余的。

是不可能存储多个枚举作为某种分隔列表在NHibernate?

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

您将需要使用Flag枚举,并将组合值作为单个值存储到数据库中。请看这个答案的例子和解释。

这将使人类更难阅读,因为我们大多数人不会自动将一个数字转换成它的等效位序列。但是,它应该使转换在代码中自动发生。