Entity Framework 4.1モデルでダイナミックな列挙型のフィールドやプロパティを表現する方法

私はあなたが最終的にフロントエンドを使用してアプリケーションで使用される列挙を作成し、変更することを可能にするシステムのPOCを取り上げようとしています。動的な列挙型のようなもの。

たとえば、仮のバグトラッカーアプリケーションでは、 openaccepted 、および closedの値を持つ status 。これらの列挙型(および対応する値)はすべてUIを使用してリアルタイムで変更できるため、管理者は新しい再割り当てされた値を思いつくことができます(管理ページ、おそらく)どこかアプリケーションの寿命を延ばすでしょう。また、新しい列挙型を作成することもできます。新しい列挙型は独自の値(例: complexity 列挙型)を持ちます。

私が現在考えているのは、 EnumerationValue クラスの 1:* リファレンスを持つ Enumeration クラスがあることです。

public class Enumeration {
    public string Name { get; set; }
    public ICollection Values { get; set; }
}

public class EnumerationValue {
    public string Name { get; set; }
    public string Description { get; set; }
}

それは簡単な部分です。実際にこれらの動的列挙型を使用するエンティティを作成すると、私は突っ込んでしまいます。

結果的に Status プロパティを持つ BugRecord エンティティを作成しているとしましょう。上記のロジックに続いて、私はそれを次の行に沿って記述する必要があります:

public class BugRecord {
    public EnumerationValue Status { get; set; }
}

しかし、多くの異なる Enumeration (および EnumerationValue )を持つことができれば、 BugRecord.Status の値を制限する方法があります Enumeration ステータスの EnumerationValue だけに移動しますか?あなたはどうやってこのような問題に取り組むべきですか?

2
@chemicalNova〜私はそうは思わない、 Enumeration エンティティは単なるグループ化のほうが多いのだろうか?実際の値はエンティティ自体の EnumerationValue です。バグレコードのステータスが active の場合、 BugRecord.Statusnew EnumerationValue {Name = "Active"} に似ています。またはそのようなもの。あなたはどう思いますか?
追加された 著者 Richard Neil Ilagan,
EnumerationValueではなくEnumerationであるべきですか?
追加された 著者 chemicalNova,

1 答え

3番目のEntity/JoinTable EnumerationChoiceを作成し、これを使用してBugRecordをEnumerationValueにマップします

public class EnumerationChoice {
    public Enumeration EnumerationCategory { get; set; }
    public EnumerationValue Value { get; set; }
}

BugRecordは次のようになります:

public class BugRecord {
    public EnumerationChoice BugType { get; set; }
    public EnumerationChoice Status { get; set; }
}

データは次のようになります。

BugRecord:
    EnumerationChoice:
        -BugType
        -BugTypeValue1
    EnumerationChoice:
        -Status
        -Open

このようにして、EnumerationChoiceに値を設定しようとすると、EnumerationCategoryを参照して、有効なEnumerationValuesを割り当てられます。

2
追加された