在数据库中存储枚举值的最佳方法 - String 或 Int

发布于 2024-08-08 15:11:24 字数 699 浏览 7 评论 0原文

我的应用程序中有许多枚举 在某些类中用作属性类型。

将这些值存储在数据库中的最佳方式是什么,作为字符串还是整数?

仅供参考,我还将使用 Fluent Nhibernate 映射这些属性类型。

示例代码:

public enum ReportOutputFormat
{
    DOCX,
    PDF,
    HTML
}

public enum ReportOutputMethod
{
    Save,
    Email,
    SaveAndEmail
}

public class ReportRequest
{
    public Int32 TemplateId
    {
        get { return templateId; }
        set { templateId = value; }
    }
    public ReportOutputFormat OutputFormat
    {
        get { return outputFormat; }
        set { outputFormat = value; }
    }

    public ReportOutputMethod OutputMethod
    {
        get { return outputMethod; }
        set { outputMethod = value; }
    }
}

I have a number of enums in my application
which are used as property type in some classes.

What is the best way to store these values in database, as String or Int?

FYI, I will also be mapping these attribute types using fluent Nhibernate.

Sample code:

public enum ReportOutputFormat
{
    DOCX,
    PDF,
    HTML
}

public enum ReportOutputMethod
{
    Save,
    Email,
    SaveAndEmail
}

public class ReportRequest
{
    public Int32 TemplateId
    {
        get { return templateId; }
        set { templateId = value; }
    }
    public ReportOutputFormat OutputFormat
    {
        get { return outputFormat; }
        set { outputFormat = value; }
    }

    public ReportOutputMethod OutputMethod
    {
        get { return outputMethod; }
        set { outputMethod = value; }
    }
}

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

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

发布评论

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

评论(2

开始看清了 2024-08-15 15:11:24

这两种情况的实现都很容易,并且性能差异应该很小。

因此,要寻找意义:字符串比数字更有意义,所以使用字符串。

The implementation is easy in both cases, and performance differences should be minor.

Therefore, go for the meaning : the Strings are more meaningful than numbers, so use the String.

国产ˉ祖宗 2024-08-15 15:11:24

两者各有优点。如果您按整数值存储它们,那么稍后在项目中编辑枚举时必须小心。如果以某种方式重新定义枚举元素的整数值,则所有数据都将被损坏。但它将是使用的最快/最小的数据类型。

如果您使用字符串表示形式,只要不更改枚举中元素的名称,就不会遇到重新定义值的问题。然而,字符串会占用数据库中更多的空间,并且使用成本可能会更高一些。

最后,我想没有最终的赢家。

编辑

使用整数值可能是最好的方法。您可以通过自己设置每个元素的值来克服枚举元素的“重新定义值”问题。确实是凯文的好建议。

Both have advantages. If you store them by their Integer value, then you must be careful editing your enumeration later on in your project. If somehow the integer values for the enumeration elements get redefined, all your data will be corrupted. But it will be the fastest/smallest datatype to use.

If you use the string representation you'll not have the redefined value problem for as long as you don't change the name of the elements in the enumeration. However strings take up more space in your database and are probably a bit more costly in use.

At the end, there's no definitive winner I guess.

Edit

Using the Integer value might be the best way. You can overcome the 'redefined value' problem for the enumeration elements, by setting the value for each element yourself. Indeed a good suggestion from Kevin.

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