5

クラスのプロパティをテーブルの行にマップする方法を知っていますか? [ID, KEY, VALUE] というテーブルを用意しましょう。

定義済みのキー値 (属性など) に対して、値列から値を取得して、クラス内のプロパティをマップしたいと考えています。

例:

テーブル

 ---------------------------------
| ID  | Key        | Value        |
 ---------------------------------
| 1   | Name       | Jon          |
 ---------------------------------
| 2   | Surname    | Doe          |
 ---------------------------------

クラス

public class Bar
{
    public string Name { get; set; }
    public string Suname { get; set; }
}

これを達成するためにEFに何かありますか、それとも独自のカスタムコードを書く必要がありますか?

ブラジル

4

2 に答える 2

2

列からプロパティに値をマップすることはできません。したがって、キーと値のテーブルがあるので、テーブルの内容を辞書に読み込むことをお勧めします。

まず、テーブルの列名に対応するプロパティを持つエンティティが必要です。

public class Foo
{
   public string Key { get; set; }
   public string Value { get; set; }
}

このエンティティをテーブルにマップした後、すべてのテーブル コンテンツをディクショナリに読み込むことができます。

var values = context.Foos.ToDictionary(f => f.Key, f => f.Value);

キーで値を簡単に取得できるようになりました。

var name = values["Name"];

このディクショナリをプロパティのバッキング ストアとして使用することもできます。

public void Bar
{
    private Dictionary<string, string> values = 
         context.Foos.ToDictionary(f => f.Key, f => f.Value);

    public string Name { get { return values["Name"]; } }
    public string Surname { get { return values["Surname"]; } }
}
于 2013-09-24T17:22:32.437 に答える