【问题标题】:Mapping database int to enum flags in model将数据库 int 映射到模型中的枚举标志
【发布时间】:2010-10-13 10:32:08
【问题描述】:

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

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

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

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

这是个好主意吗?如果是这样,我该怎么做?如果没有,我是否应该把它收拾起来,自己写出所有的代码(而不是使用一些漂亮的技巧)?

【问题讨论】:

  • AFAIK L2SQL(和 EF,就此而言),不支持直接映射到枚举,因此需要“拼接”。

标签: c# linq-to-sql


【解决方案1】:

您将需要那个辅助类,OR 映射器都不完全支持将 int 映射到 enum。有很多方法可以绕过它,但这更像是对目标行为的复制,其中有空洞,而不是接近想要的效果。

【讨论】:

  • Enum 支持在 EF 团队的未来功能列表中(或者我想我已经在他们博客的某个地方读到过),所以希望我们最终能得到它。
  • 好吧,我不介意这样做。希望我们很快就会看到对枚举的支持 :) 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 2021-07-31
  • 2018-08-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
相关资源
最近更新 更多