我想在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中的某种分隔列表?
答案 0 :(得分:2)
您将需要使用Flag enum,并将组合值作为单个值存储到数据库中。有关示例和解释,请参阅this answer。
这将使人类更难阅读,因为我们大多数人不会自动将数字转换为其等效的比特序列。但是,它应该在您的代码中自动进行转换。