2016-10-29 86 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()) ... 

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