2016-10-29 73 views
1

我想找到一个由SqlDataReader实现的接口,它暴露了HasRows,Read()和NextResult()。我需要这些属性和方法,因为我需要读取存储过程返回的多个resultSets(as mentioned here)。目前我正在使用公开Read()和NextResult()而不是HasRows属性的System.Data.IDataReader。C#SqlDataReader接口与HasRows,Read()和NextResult()

我需要一个接口,以便耦合将会丢失,并且为了代码可测试性。

在这样的界面上的任何帮助?或者我需要从头开始编写一个接口的抽象层?

+2

没有这样的接口。你应该自己写。 –

+0

为什么不在自己的界面中为Read()和NextResult()实现IDataReader,然后为hasRows实现自己的自定义界面,这将减少您的刮伤 –

+0

''IDataReader'本身很好,因为['IDataReader.NextResult()']( https://msdn.microsoft.com/en-us/library/system.data.idatareader.nextresult.aspx)返回一个'bool',这样你就可以执行'do {...} while(reader.NextResult()) ;'见例[这个答案](https://stackoverflow.com/questions/38953677/write-sqldatareader-to-immediate-window-c-sharp/39757521#39757521)。 – dbc

回答

3

HasRows不需要任何东西(通常它被冗余使用,因为人们不知道更好)。标准模式是:

while (reader.Read()) ... 

因此,这消除了您所需要的接口的需要。