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

发布于 2024-08-18 05:00:33 字数 248 浏览 6 评论 0原文

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

ObjectId ObjectName

  1       Salmon
  2       Trout
  3       Seabass
  4       Shark

等等。

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

I have a table, lets call it Objects. It has a predefined set of records looking like this:

ObjectId ObjectName

  1       Salmon
  2       Trout
  3       Seabass
  4       Shark

Etc..

So, this I would like to implement somehow as an enum. But what's the best way, implement it in the database creating tables for it or in the application logic in an CommonEnums codebehind file etc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抹茶夏天i‖ 2024-08-25 05:00:33

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

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

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

编辑:添加如何执行此操作的示例(在 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

最好的问候

We add them in both places, we use code generator to keep in sync the values.

The main values are in the Enum but the template automatically generates a script to update the DB

We also add a property to our entities to expose an enum property instead of the integer that is saved to the DB

Edit: Adding an example of how to do it (In 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

Later an EnumHelper class take the classes that has the attribute EnumDbTableInfo and generates the script to update the DB

Best Regards

烟花易冷人易散 2024-08-25 05:00:33

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

I generally use a foreign key (lookup) table in the db if I will need to join the tables to get a text description of the code for display to a user, say for a report, or ad hoc querying or something. If the value is strictly internal - that is, never displayed to anyone - or is used only in my code where I can translate it as needed, I would just put a constraint on the field and skip the foreign key table.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文