【问题标题】:C# SqlDataReader interface with HasRows, Read() and NextResult()带有 HasRows、Read() 和 NextResult() 的 C# SqlDataReader 接口
【发布时间】:2016-10-29 08:19:54
【问题描述】:

我试图找到一个由 SqlDataReader 实现并公开 HasRows、Read() 和 NextResult() 的接口。我需要这些属性和方法,因为我需要读取存储过程返回的多个结果集 (as mentioned here)。目前我正在使用 System.Data.IDataReader 公开 Read() 和 NextResult() 但不公开 HasRows 属性。

为了代码的可测试性,我需要一个接口,这样耦合就会丢失。

对这样的界面有任何帮助吗?或者我需要从头开始编写接口的抽象层?

【问题讨论】:

  • 没有这个接口。你应该自己写。
  • 为什么不在自己的接口中为 Read() 和 NextResult() 实现 IDataReader,然后为 hasRows 实现自己的自定义接口,这将减少您的工作量
  • IDataReader 本身很好,因为IDataReader.NextResult() 返回一个bool,所以你可以做do { ... } while (reader.NextResult()); 例如参见this answer

标签: c# sql testing sqldatareader


【解决方案1】:

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

while (reader.Read()) ...

所以这消除了对您正在寻找的界面的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多