我正在为预先存在的应用程序构建实体框架数据上下文。由于这个应用程序有一组非常干净的 POCO 来定义域模型,我选择使用 EF 的 Code First 从这些类生成数据库,这样我们就不必维护两个单独的模型;理论上,数据库将被迁移以匹配我们对 POCO 所做的任何事情,只是在OnModelCreating()
覆盖中偶尔需要一些映射。
我的问题是其中一个域类具有Dictionary<string, object>
用于存储状态数据的类型属性(正在从其他地方的键值存储中读取,所以我们坚持使用这种格式)。我的第一个想法是我们可以只应用[NotMapped]
这个属性,然后创建一个string
属性,其中 getter 和 setter 只是将其序列化/反序列化为Dictionary
XML、JSON 或其他。
问题是我们没有用特定于数据库的东西来改变域类,所以我必须从数据访问程序集中完成所有这些工作。我知道如何NotMapped
在 Fluent Configuration API 中应用该属性,但我不知道如何为序列化参数设置列。在模型上,它看起来像这样:
[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 中编写等效代码?甚至可能吗?