如何存储没有关联表的多个枚举
本文关键字:关联 枚举 何存储 存储 | 更新日期: 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枚举,并将组合值作为单个值存储到数据库中。请看这个答案的例子和解释。
这将使人类更难阅读,因为我们大多数人不会自动将一个数字转换成它的等效位序列。但是,它应该使转换在代码中自动发生。