我为预先存在的应用程序构建实体框架数据上下文。由于这个应用程序有一套很好的定义域模型的POCO,我选择使用EF的Code First从这些类生成数据库,这样我们就不必维护两个独立的模型。从理论上讲,数据库将被迁移以匹配我们对POCO所做的任何事情,只需要在OnModelCreating()
覆盖中偶尔进行一些映射。
我的问题是,其中一个域类具有Dictionary<string, object>
类型的属性,用于存储状态数据(正在从其他地方的键值存储中读取,因此我们&#39 ;坚持这种格式)。我的第一个想法是我们可以将[NotMapped]
应用于此属性,然后创建一个string
属性,其中getter和setter将Dictionary
序列化/反序列化为XML,JSON或其他
问题在于我们不会使用特定于数据库的内容更改域类,因此我必须从数据访问程序集中完成所有这些操作。我知道如何在Fluent配置API中应用NotMapped
属性,但我无法确定如何为序列化参数设置列。在模型上,它看起来像这样:
[NotMapped]
public IDictionary<string, object> Parameters { get; set; }
public string JSONParameters
{
get
{
return JsonConvert.SerializeObject(Parameters);
}
set
{
Parameters = JsonConvert.DeserializeObject<Dictionary<string, object>>(value);
}
}
如何在Fluent Configuration API中编写等效代码?它甚至可能吗?