【问题标题】:Should I store my Enums at database level or in the application logic (.NET)?我应该将我的枚举存储在数据库级别还是应用程序逻辑 (.NET) 中?
【发布时间】:2010-01-19 13:28:27
【问题描述】:

我有一张桌子,我们称之为对象。它有一组预定义的记录,如下所示:

ObjectId ObjectName

  1       Salmon
  2       Trout
  3       Seabass
  4       Shark

等等。

所以,我想以某种方式将其实现为枚举。但是最好的方法是在数据库中为它创建表或在 CommonEnums 代码隐藏文件等中的应用程序逻辑中实现它?

【问题讨论】:

    标签: sql vb.net enums enumeration


    【解决方案1】:

    我们在两个地方都添加它们,我们使用代码生成器来保持值同步。

    主要值在枚举中,但模板会自动生成脚本来更新数据库

    我们还向我们的实体添加一个属性以公开一个枚举属性,而不是保存到数据库中的整数

    编辑:添加如何操作的示例(在 VB.NET 中:

        <EnumDbTableInfo("TableName", "keyColumn", "descColumn")> _
        Public Enum CasoImportacion As Short
    
            <Description("")> _
            Normal = 0
    
            <Description("The First Description")> _
            FirstRealValue = 1
    
            <Description("A second one")> _
            AnotherValue = 2
    
            <Description("Third Description")> _
            LastValue = 3
    
    
    End Enum
    

    稍后一个 EnumHelper 类获取具有属性 EnumDbTableInfo 的类并生成脚本以更新 DB

    最好的问候

    【讨论】:

    • +1 绝对在这两个地方 - 您必须在数据库中拥有值以确保初学者的完整性!
    【解决方案2】:

    如果我需要连接表以获取代码的文本描述以显示给用户,例如报告或临时查询等,我通常会在数据库中使用外键(查找)表。如果该值是严格内部的 - 也就是说,从不向任何人显示 - 或者仅在我可以根据需要翻译它的代码中使用,我只会对该字段施加约束并跳过外键表。

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 1970-01-01
      • 2021-06-27
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      相关资源
      最近更新 更多