1

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

但是,我们发现这种方法难以管理。当结构发生变化时,我们必须手动更改 json 字符串,以便 json 序列化程序可以再次反序列化它。

有没有人有一个很好的解决这个问题的方法?

我们是否应该放弃 json 想法并开始以与其他 pocos 类似的方式存储 poco,我们首先使用代码并使用 sql 脚本管理更改以更新数据库列

4

1 回答 1

2

您可以更改方法并使用 SQL Server 的原生功能:使用XML 列而不是 nvarchar 列。此 XML 列的使用方式与您的 nvarchar 列相同(它将包含序列化为 XML 而不是 JSON 的对象属性),并且可以使用 SQL 进行查询。您可以使用标准 XmlSerializer获取要存储在列中的 XML,或者编写自己的简单 XML 序列化引擎来准确选择要序列化的属性以及序列化方式。

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

这种方法在将不同的对象或经常更改的对象存储到同一个表中时非常有用,并且也可以被认为是具有多值 数据库结构的近似值。

于 2013-06-08T06:10:36.283 回答