将数据库int映射到模型中的枚举标志

时间:2010-10-13 01:34:18

标签: c# linq-to-sql

我的应用程序有一个模型,它当前在SQL数据库中使用一个整数来存储[Flags] Enum的值。 Enum看起来像这样:

namespace MyProject.Models
{
    [Flags]
    public enum MyEnum : int
    {
        FirstThing = 1,
        SomethingElse = 2,
        YetAnotherOne = 4
    }
}

因此,如果特定行将此字段设置为3,则表示标志FirstThingSomethingElse都已设置。现在我正在使用一个帮助器类来转换和检查MyEnum值到/从/反对整数,这确实有效,但我认为必须有一种方法将SQL INT字段直接映射到枚举。

基本上,最终目标是有一个复选框列表,每个可能的标志一个,最终将作为INT保存在数据库中。

这是个好主意吗?如果是这样,我该如何解决这个问题呢?如果没有,我应该自己吮吸它并自己写出所有代码(而不是使用一些漂亮的技巧)?

1 个答案:

答案 0 :(得分:2)

您将需要该辅助类,OR映射器都不支持将int映射到枚举。它有很多方法,但更多的是目标行为的复制,其中有间隙孔,而不是想要的效果附近的任何东西。