我不得不从SQL Server返回几个记录集来构造一个C#对象。虽然EF目前不支持(可能是beta版本)返回这样的复杂对象,但我不得不求助于使用ADO.NET返回一个DataSet来检索数据,然后将其转换为令人愉快的C#表示,请参见下文。
SELECT * FROM ...
exec dbo.usp_SP1 @ProductID,@CatalogName
exec dbo.usp_SP2 @ProductID,@CatalogName
最好减少数据库调用,但是由于执行此查询的方式会使每个DataSet的多个请求最差?
答案 0 :(得分:0)
一个数据库往返总是比三个(或两个)更好。
即使使用这组查询,您的代码也可以是干净的。您只需连续三次致电DataTable.Load
,即可从DbDataReader
加载所有三个结果集。
所以是的,我推荐一个更大的查询和一个DataSet
用于所有结果集。
答案 1 :(得分:-1)
您可以在dataset
内引用每个表格结果。
ds.Tables[index].Rows...
。因此,我会拨打一个电话,获取所有数据,然后通过是否调用另一个sproc或只是一个简单的SELECT
来返回它。