将C#计算的列添加到表中?

时间:2014-07-22 12:21:35

标签: c# entity-framework serialization ef-fluent-api

我为预先存在的应用程序构建实体框架数据上下文。由于这个应用程序有一套很好的定义域模型的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中编写等效代码?它甚至可能吗?

0 个答案:

没有答案