我应该将我的枚举存储在数据库级别还是应用程序逻辑(.NET)中?

时间:2010-01-19 13:28:28

标签: sql vb.net enums enumeration

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

ObjectId ObjectName

  1       Salmon
  2       Trout
  3       Seabass
  4       Shark

等。

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

2 个答案:

答案 0 :(得分:6)

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

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

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

编辑:添加如何操作的示例(在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 :(得分:0)

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