2016-12-27 8 views
0

私のデータベースから、システムでは、C#のリポジトリパターンの列挙型属性であるint属性を読み取るにはどうすればよいですか。リポジトリパターンの列挙c#

私はクラスを作っ:

public class Status : Enumeration 
{ 
    public static readonly Status Active = new Status(0, "Active"); 
    public static readonly Status Inactive = new Status(1, "Inactive"); 
    public static readonly Status Removed = new Status(2, "Removed"); 

    public Status() 
    { 
    } 

    private Status(int value, string displayName) 
     : base(value, displayName) 
    { 
    } 
} 

だから、銀行のクラスで私はStatus属性を置きます。

私のBankクラスがある銀行からの読み込み時に、ステータスタイプintの属性を持つテーブルと属性がnullになります。

+0

こんにちは、歓迎、StackOverflow。ヘルプページ、特に[ここではどのトピックについて聞かせていただけますか?](http://stackoverflow.com/help/on-topic)と[質問しないでください。」](http://stackoverflow.com/help/dont-ask)。さらに重要なことは、[Stack Overflow question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。 –

+0

EntityFrameworkを使用しているのか、それとも単純なADO.netを使用していますか? –

+0

DapperRepositoryを持つADO.net – Dariel

答えて

0

私はDapperRepositoryに対処していない例

public class Status : Enumeration 
    { 
     //YOUR CODE 

     public static Status FromInteger(int value){ 
     switch(value){ 
      case 0: 
      return Active; 
      case 1: 
      return Inactive; 
      case 2: 
      return Removed; 
      default: 
      throw new ArgumentException(); 
     } 
     } 
    } 

のために、あなたのクラスの「列挙型」に整数を変換するための静的メソッドを紹介します。しかし、ClassMapper<T>を見てみると、AutoMapメソッドを使ってカスタム変換を利用できる可能性があることがわかります。しかし、私はドキュメンテーションも例も見つけられませんでした。 したがって、私は普遍的な解決策しか提案できません。

public class Bank { 

     //Standard fields that are mapped to a table in database 

     public Status StatusEnum { 
     get { 
      Status.FromInteger(StatusId); //StatusId is a property mapped to table's field 
     } 

     set { 
      //TODO Handle null value 
      StatusId = value.Value; 
     } 
     } 
    } 

注:

  • 私はプロパティStatusIdはステータス値を含むテーブルのフィールドにマップされたフィールドであることを前提としています。
  • このコードには明らかな問題があります。StatusIdでは、列挙型の範囲外の値を使用できます。データの一貫性を維持するには、さらに検証を行う必要があります。
+0

ありがとう – Dariel