ini*_*iki 19 database nhibernate enums fluent
我的应用程序中有许多枚举,在某些类中用作属性类型.
将这些值存储在数据库中的最佳方法是什么,如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; }
}
}
Run Code Online (Sandbox Code Playgroud)
KLE*_*KLE 20
在这两种情况下,实施都很容易,性能差异应该很小.
因此,请注意:字符串比数字更有意义,因此请使用字符串.
pyr*_*lus 16
两者都有优势.如果按Integer值存储它们,则必须在项目中稍后编辑枚举.如果以某种方式重新定义了枚举元素的整数值,则所有数据都将被破坏.但它将是最快/最小的数据类型.
如果使用字符串表示形式,只要不更改枚举中元素的名称,就不会出现重新定义的值问题.但是,字符串会占用数据库中更多的空间,并且使用起来可能会花费更多.
最后,我猜没有明确的赢家.
编辑
使用Integer值可能是最好的方法.您可以通过自己设置每个元素的值来克服枚举元素的"重新定义的值"问题.确实是凯文的好建议.