2009-09-22 75 views
0

大多数情况下,我正在处理的应用程序处理对象,并且我可以将一个对象列表绑定到gridview,没有任何问题。asp.net 2.0:最好的数据结构绑定到gridview

但是,在一些情况下,我想要显示在gridview中多表连接的结果。当前的代码使用一个数据集,这很容易,但我想知道是否有更好/更有效的方法来做到这一点。

我们不需要数据集的大部分功能 - 数据是只读的,并且在大多数情况下不会有大量记录。 (即可能不超过200,通常为10-20)

回答

0

我认为你应该尽可能使用DataReader。有时候DataSet更合适,比如下面列出的两种情况。这些来自文章“Why I Don't Use DataSets in My ASP.NET Applications”。另请参阅后续文章“More On Why I Don't Use DataSets in My ASP.NET Applications”。

  1. 在桌面上,WinForms应用程序。考虑一个基于桌面的 数据录入类型的程序。用户可能会启动该程序,从某些数据库服务器加载销售 数据,使 发生一些变化,然后想要保存 这些更改。这是DataSet的理想情况 。它允许 的数据读入驻留在客户端的内存,这 得到用户的工作对数据 无需 能力的数据集 不断做出游回 数据库。在完成编辑 数据后,他们可以执行批量更新, 正常处理 可能发生的任何更改,而用户使用 处于断开连接状态的数据时可能发生了此更改。此外,由于DataSet是一个断开连接的数据存储,这个数据可以脱机。 前往客户的 网站的推销员可以加载此数据,并且能够 查看他的笔记本电脑上的数据,而 正在运输中,或者在客户的办公室时 。

  2. 用于发送/接收远程数据库信息或允许不同的 平台之间的通信。由于数据集可以 串行/解串行化为XML这样 容易,他们是 的主要候选人跨越物理 边界或 串行数据的装置置于一个 平台无关的格式发送信息。例如,如果要从Web服务返回数据库数据 ,则可以选择 ,其中一个选项是 只需将数据库数据读入 数据集,然后从Web服务方法返回DataSet 。该数据集将自动被 序列化为XML并通过 连线发送。 (我个人不推荐 以这种方式从 返回来自Web服务的数据。相反,我更愿意使用自定义业务对象 - 它允许对XML 序列化进行更精细的控制,提供更轻的 返回有效负载,并且看起来更少的特定于体系结构的 。