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



我有一个实体,其中一个属性是一个复杂对象。我想在我的DB中表示此对象为序列化字符串(具体为JSON)。

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

不幸的是,实体框架仍然不支持这种属性映射。你可能不得不求助于这样的技巧:

public class MyEntity
{
    //...
    [NotMapped]
    public MyComplexType MyComplexType { get; set; }
    public string MySerializedComplexType
    {
        get { return Serialize(MyComplexType); }
        set { MyComplexType = Deserialize(value); }
    }
    //...
}

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

最新更新