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 回答