24

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

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

仅供参考,我还将使用流利的 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; }
    }
}
4

2 回答 2

28

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

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

于 2009-10-23T09:30:02.663 回答
22

两者都有优势。如果您通过它们的整数值来存储它们,那么您必须在以后在项目中小心地编辑您的枚举。如果以某种方式重新定义了枚举元素的整数值,那么您的所有数据都将被破坏。但这将是使用的最快/最小的数据类型。

如果使用字符串表示,只要不更改枚举中元素的名称,就不会出现重新定义值的问题。但是,字符串在数据库中占用更多空间,并且使用成本可能更高。

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

编辑

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

于 2009-10-23T09:32:55.963 回答