2

在我的情况下,我有一个我自己编写的 C# DLL,它已在包含销售/客户数据的 SQL Server 数据库中注册。到目前为止,我有点卡住了。

DLL 调用远程服务器以获取令牌。然后将令牌添加到数据库中。理想情况下,下一步是将数据从 SQL 服务器检索到 DLL 中,然后使用 DLL 检索到的令牌构建 JSON 文件并将其发布到远程服务器。

我卡住的地方是,仅在我的 JSON 文件的收据部分就有 134 个元素,具有不同的数据类型。我需要能够在我的 C# DLL 中处理所有这些数据,并且将来我可能需要将更多数据提取到这个 JSON 文件中以进行发布。我已经进行了一些研究,使用用户定义类型 (UDT) 不太有效,据我所知,这是我应该远离的一个选项。我知道的另外两个选项是导出到 XML 并在我的 DLL 中解析它,或者创建和读取 134 多个变量。

我的问题是:除了 XML/硬编码之外,还有更简单的方法吗?如果有一种方法可以使用数组或对象,但根据我在这里读到的内容似乎都不受支持,那将是理想的

谢谢你。

重要提示:由于我使用的数据库和 JSON 库,我正在使用 .Net framework 2.0

4

2 回答 2

1

您可能应该坚持使用 XML,因为您的数据是半结构化的。特别是如果您知道您的架构将随着时间的推移而改变。SQL Server还不OODBMS

于 2012-06-01T19:02:14.037 回答
1

我建议您在 C# 端使用 XML 序列化。您创建一个对数据库模式进行建模的对象。

当您使用 .NET 2.0 时,您已经有一组很好的基类来以面向对象的方式对数据库模式进行建模。甚至可以为空的列也可以映射到可以为空的对象以节省内存和网络空间。

在 SQL 端,您使用 FOR XML 子句,这会将查询的输出从表格更改为 XML。您只需要制作一个好的 SP,即可在与 C# 对象完全相同的层次结构中创建 XML。

此 XML 必须匹配类的名称和大小写以及 c# 类的属性。

然后,您将在不超过 10 行代码中从 C# 端反序列化此 XML。无论数据层次结构有多大或多么复杂,您都会立即在内存中拥有可以再次序列化为 JSON 的对象。

如果您需要一些关于如何实现这一目标的好例子,请告诉我。请澄清您是否在 SQL Server CLR 执行上下文中运行,因为您可能需要特殊权限来序列化/反序列化数据。

我想这是实现 Entity Framework 功能的一种非常原始的方式。但它有效。

于 2012-06-01T19:30:09.773 回答