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

将C#计算列添加到表中?,c#,entity-framework,serialization,ef-fluent-api,C#,Entity Framework,Serialization,Ef Fluent Api,我正在为预先存在的应用程序构建实体框架数据上下文。由于这个应用程序有一组定义域模型的干净的POCO,我选择首先使用EF的代码从这些类生成数据库,这样我们就不必维护两个单独的模型;理论上,数据库将被迁移以匹配我们对POCO所做的任何操作,只需在OnModelCreating()覆盖中偶尔需要一点映射 我的问题是其中一个域类有一个类型为Dictionary的属性,用于存储状态数据(从别处的键值存储中读取,所以我们只能使用这种格式)。我的第一个想法是,我们可以将[NotMapped]应用于这个属性,然

我正在为预先存在的应用程序构建实体框架数据上下文。由于这个应用程序有一组定义域模型的干净的POCO,我选择首先使用EF的代码从这些类生成数据库,这样我们就不必维护两个单独的模型;理论上,数据库将被迁移以匹配我们对POCO所做的任何操作,只需在
OnModelCreating()
覆盖中偶尔需要一点映射

我的问题是其中一个域类有一个类型为
Dictionary
的属性,用于存储状态数据(从别处的键值存储中读取,所以我们只能使用这种格式)。我的第一个想法是,我们可以将
[NotMapped]
应用于这个属性,然后创建一个
string
属性,其中getter和setter只是将
字典
序列化/反序列化为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);
    }
}
[未映射]
公共IDictionary参数{get;set;}
公共字符串JSONParameters
{
得到
{
返回JsonConvert.SerializeObject(参数);
}
设置
{
参数=JsonConvert.DeserializeObject(值);
}
}

如何在Fluent配置API中编写等效代码?甚至可能吗?

您希望JSONParameters属性只存在于模型中,而不存在于我们的域类中?我希望数据库有一个JSON列,域类有一个字典。恐怕这是不可能的。您将需要域对象中的字符串属性。但是如果你想的话,你可以把它变成私人的、受保护的或内部的。