实体框架:如何将复杂对象映射到单个varchar列(即以序列化形式保存)?

时间:2014-05-13 15:39:37

标签: json entity-framework serialization mapping

我有一个实体,其中一个属性是一个复杂的对象。我想在我的数据库中将此对象表示为序列化字符串(特定于JSON)。

如何配置实体框架(我使用v6.0)将上面的内容映射到varchar,而不是将其自动映射到表和列的默认EF行为?

1 个答案:

答案 0 :(得分:6)

不幸的是,Entity Framework仍然不支持这种属性映射。你可能不得不回到这样的技巧:

public class MyEntity
{
    //...
    [NotMapped]
    public MyComplexType MyComplexType { get; set; }

    public string MySerializedComplexType
    {
        get { return Serialize(MyComplexType); }
        set { MyComplexType = Deserialize(value); }
    }
    //...
}

(如果您更喜欢Fluent API,则可以使用[NotMapped]代替modelBuilder.Entity<MyEntity>().Ignore(e => e.MyComplexType)属性。)