在 C# 中从 SQL Server 检索大量数据的最简单方法

本文关键字:数据 最简单 方法 检索 中从 SQL Server | 更新日期: 2023-09-27 18:36:07

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

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

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

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

谢谢。

重要说明:由于我正在使用的数据库和 JSON 库,我在 .Net Framework 2.0 中工作

在 C# 中从 SQL Server 检索大量数据的最简单方法

我建议您在C#端使用XML序列化。创建对数据库架构建模的对象。

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

从 SQL 端使用 FOR XML 子句,该子句会将查询的输出从表格更改为 XML。您只需制作一个好的 SP,该 SP 将在确切的层次结构中创建 XML 作为 C# 对象。

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

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

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

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

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