EntityFramework-将复杂属性映射到json(字符串)列
本文关键字:字符串 json 复杂 属性 映射 EntityFramework- | 更新日期: 2023-09-27 18:00:55
我有以下实体:
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一起使用(
您这样做的方式是EF中目前唯一可用的方式。目前,EF Code First没有任何简单的方法来更改对象序列化,但可以在运行时修改EDMX文件。