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

标签 c# sql-server json .net-2.0 sqlclr

就我而言,我有一个自己编写的 C# DLL,它已在包含销售/客户数据的 SQL Server 数据库中注册。到目前为止,我有点陷入困境。

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

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

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

谢谢。

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

最佳答案

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

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

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

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

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

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

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

关于c# - 在 C# 中从 SQL Server 检索大量数据的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10855865/

相关文章:

c# - 捕捉表格到图像

SQL 2012 同步

c# - 如何检查记录是否已存在于 SQL 数据库中?

sql-server - 如何在 SQL Server 中要求列中的最小字符数?

ios - 避免 JSONSerialization 将 Bool 转换为 NSNumber

c# - 正则表达式分割字符串,尊重引号并保留键=值对

c# - 在 Visual Studio C# 中以 MS Access 数据库形式获取 OLE(位图)对象,我的代码有什么问题?

c# - 为什么我的自定义 OnLoaded 事件会收到 "Object reference not set to an instance of an object"?

javascript - 使用 selectfield 值查找 json 表

java - 将两种类型的json转换为同一个对象