24

アプリケーションには、一部のクラスでプロパティ タイプとして使用される多数の列挙型があります。

これらの値を 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; }
    }
}
4

2 に答える 2

28

どちらの場合も実装は簡単で、パフォーマンスの違いはわずかです。

したがって、意味を調べてください。文字列は数値よりも意味があるため、文字列を使用してください。

于 2009-10-23T09:30:02.663 に答える
22

どちらにも利点があります。それらを整数値で保存する場合は、後でプロジェクトで列挙を慎重に編集する必要があります。何らかの方法で列挙要素の整数値が再定義されると、すべてのデータが破損します。ただし、これは使用するのに最も高速/最小のデータ型になります。

文字列表現を使用すると、列挙内の要素の名前を変更しない限り、再定義された値の問題は発生しません。ただし、文字列はデータベース内でより多くのスペースを占有し、おそらく使用コストが少し高くなります。

結局、決定的な勝者はいないと思います。

編集

整数値を使用するのが最善の方法かもしれません。各要素の値を自分で設定することにより、列挙要素の「再定義された値」の問題を克服できます。確かに、ケビンからの良い提案です。

于 2009-10-23T09:32:55.963 に答える