Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何管理对数据库结构频繁而复杂的poco更改_C#_.net_Json_Entity Framework - Fatal编程技术网

C# 如何管理对数据库结构频繁而复杂的poco更改

C# 如何管理对数据库结构频繁而复杂的poco更改,c#,.net,json,entity-framework,C#,.net,Json,Entity Framework,为了处理对poco类的不断更改,我们将poco序列化为json字符串,然后将它们存储到sql数据库中的nvarchar列中 然而,我们发现这种方法很难管理。当结构更改时,我们必须手动更改json字符串,以便json序列化程序可以再次对其进行反序列化 有人能很好地解决这个问题吗 如果我们放弃json的想法,开始以与其他poco类似的方式存储poco,首先使用代码,然后使用sql脚本管理更改以更新数据库列,您可以改变方法并使用sql Server固有的功能:使用一个而不是一个nvarchar列。此X

为了处理对poco类的不断更改,我们将poco序列化为json字符串,然后将它们存储到sql数据库中的nvarchar列中

然而,我们发现这种方法很难管理。当结构更改时,我们必须手动更改json字符串,以便json序列化程序可以再次对其进行反序列化

有人能很好地解决这个问题吗


如果我们放弃json的想法,开始以与其他poco类似的方式存储poco,首先使用代码,然后使用sql脚本管理更改以更新数据库列,您可以改变方法并使用sql Server固有的功能:使用一个而不是一个nvarchar列。此XML列的使用方式与nvarchar列相同(它将包含序列化为XML而不是JSON的对象属性),并且可以使用SQL进行查询。您可以使用获取要存储在列中的XML,或者编写自己的简单XML序列化引擎来选择要序列化的属性和方式

当您提取(检索)列数据时,您可以非常简单地以一种非常通用和宽容的方式将其反序列化回数据对象(即,序列化XML中的每个节点将表示目标对象上的一个属性-只需迭代并使用反射)


当存储不同的对象或频繁地将对象更改到同一个表中时,这种方法非常有用,也可以认为是具有结构的近似方法

您是否考虑过使用EF代码优先迁移?我原以为,尝试将数据序列化为JSON会消除使用SQL数据库的大部分好处,并可能会产生尽可能多的问题。多个SQL文档数据库中的哪一个?考虑EAV模型是否适合你。