0

我正在使用 c# 和 SQL Server 从数据库中获取数据并在页面加载时在页面上填充一些标签。这些信息来自一个 SQL 视图,它在一行中返回一大堆信息。例如:

SELECT 'car' AS product, 12 As daysUntilEOM, '2010-01-01' AS LastHoliday, 23.7 AS Length

将始终只返回 1 行

我的项目的其余部分正在使用 LINQ,我最初开始沿着这条路走下去,但是创建一个我只会为此使用一次的对象有什么意义,将所有值作为键值分配给对象对,然后将它们重新分配给标签文本?似乎很多无意义的编码。

使用数据读取器似乎也有同样的问题。

我能看到的最简单的解决方案(即最少的代码)是使用 dataAdapter 填充数据集并将数据集从 DAL 传递回页面,然后直接分配给标签。但是对于单行数据,这似乎就像用卡车运一个西红柿。

有没有像 ExecuteScalar 这样返回整行而不是第一列的东西?还是应该简单地编写 DataAdapter 就足够了,我应该不再担心开销?

谢谢!

4

2 回答 2

5

你应该打电话ExecuteReader并传递CommandBehavior.SingleRow旗帜。

为避免耦合,您可以将 DataReader 转换为字典,如下所示:

return Enumerable.Range(0, reader.FieldCount)
                 .ToDictionary(reader.GetName, reader.GetValue);
于 2010-11-26T03:13:25.163 回答
0

ExecuteScalar 返回一个标量值,而不是行。带有命令对象的 DataAdapter(可能还将参数提供给存储的过程而不是执行 sql 语句)就可以了。

于 2010-11-26T03:15:56.110 回答