4

次のエンティティがあります。

public class SampleClass
{
  public int Id { get; set; }
  public object Args {get; set; }
}

さまざまなタイプにすることができ、クエリ可能である必要がないためArgs、データベースにjson文字列として保存したいと考えています。

次の回避策で問題が解決することはわかっています。

public class SampleClass
{
  public int Id { get; set; }
  public object Args { get { return Json.Deserialize(ArgsJson); } set { ArgsJson = Json.Serialize(value); } }
  public string ArgsJson {get; set; }
}

しかし、モデルに関係のない情報を公開し、モデルに関係のないロジックが含まれているため、これはかなり醜いです。

私がやりたいことは、そのようなものです:

public class SampleClassMapper : EntityTypeConfiguration<SampleClass>
{
  public SampleClassMapper()
  {
    this.Property(e => e.Args).MapAs<string>(arg => Json.Serialize(arg), str => Json.Deserialize(str));
  }
}

そうするためのクールな方法はありますか?

(私は.Net 4.0をEntityFramework 5およびSql Server 2008で使用しています)

4

1 に答える 1

1

あなたが行う方法は、現時点で EF で利用できる唯一の方法です。現在、EF Code First にはオブジェクトのシリアル化を変更する簡単な方法はありませんが、これは実行時に EDMX ファイルを変更することで実行できます。

于 2013-07-23T19:05:19.997 に答える