我有一个asp.net页面需要返回一对多关系的对象。即,存在单个标题行,后面是未指定数量的数据行。通常会有1到10行,所以我不会在这里处理大量数据 - 只是一个经常调用的页面。
我知道OLE提供程序支持SHAPE命令,该命令允许返回分层数据,但我使用的SQLDataReader(ADO?)不支持它。问题是,这里的最佳实践/最佳表现是什么?
- 查询中的INNER JOIN并返回包含标题和数据行的单个表,这意味着标题在第一行之后的每一行中重复。这会产生不确定的数据流量还是在幕后隐藏优化?
- 对SQLCommand.executeReader()进行两次单独调用 - 一次返回标题行,另一次返回可变数量的数据行。但是这会导致发出2个单独的查询而不是1个查询的开销。
- 使用支持SHAPE的API。
- 只对SQLCommand.executeReader()进行一次调用,但查询包含2个select语句,只返回2个数据集。然后在处理标题行后调用SQLDataReader.nextResult()。这似乎是解决我原始问题的好主意,因为只有一个标题行。在其他情况下,情况并非如此,在这种情况下,#4不是一种选择。此外,数据访问是顺序的,我的应用程序需要在使用数据行之前和之后使用标头。所以我必须在调用nextResult()之前将标题行写入内存中的DataTable。
醇>