0

我想在 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 vs. generic.icollection 或后者的一些变体)。如果用户从复选框列表中选择“Choice1”和“Choice2”,则只保存“Choice1”。同样,对于我的情况,创建单独的表是多余的。

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

4

1 回答 1

2

您将需要使用Flag enum,并将组合值作为单个值存储到数据库中。有关示例和说明,请参见此答案。

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

于 2013-03-05T00:06:25.120 回答