我的应用程序中有很多枚举 在某些类中用作属性类型。
将这些值存储在数据库中的最佳方法是什么,如String或Int?
仅供参考,我还将使用流畅的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; }
}
}
答案 0 :(得分:20)
在这两种情况下,实施都很容易,性能差异应该很小。
因此,请注意:字符串比数字更有意义,所以请使用字符串。
答案 1 :(得分:15)
两者都有优势。如果按Integer值存储它们,则必须在项目中稍后编辑枚举。如果以某种方式重新定义了枚举元素的整数值,则所有数据都将被破坏。但它将是最快/最小的数据类型。
如果使用字符串表示形式,只要不更改枚举中元素的名称,就不会出现重新定义的值问题。但是,字符串在数据库中占用更多空间,使用起来可能要贵一些。
最后,我猜没有明确的赢家。
修改强>
使用Integer值可能是最好的方法。您可以通过自己设置每个元素的值来克服枚举元素的“重新定义的值”问题。确实是凯文的一个很好的建议。