虽然SqlDataReader.Read()
实现了IDataReader.Read()
,但在使用异步方法(如ReadAsync()
)时似乎没有接口SqlDataReader
。为什么没有SqlDataReader.ReadAsync()的接口
首先,纠正我,如果我错了。
这是有理由吗?有没有什么关于新的异步等待东西,证明在这里缺乏接口?这只是有点莫名其妙。
虽然SqlDataReader.Read()
实现了IDataReader.Read()
,但在使用异步方法(如ReadAsync()
)时似乎没有接口SqlDataReader
。为什么没有SqlDataReader.ReadAsync()的接口
首先,纠正我,如果我错了。
这是有理由吗?有没有什么关于新的异步等待东西,证明在这里缺乏接口?这只是有点莫名其妙。
虽然界面没有定义整个方法,但有一个共同的抽象类DbDataReader
which defines ReadAsync
。
可能不包括ReadAsync
作为IDataReader
接口的一部分的最重要原因是为了避免在向后兼容性方面发生重大变化。
如果IDataReader
在新框架的版本将迫使任何数据读取器实施ReadAsync
,任何ADO.NET提供程序或框架依靠所谓的界面上不会在所有实现它,这些实现将被打破。
也许他们可以使用接口隔离原则,他们可以定义一个名为IDataReaderAsync
这可以提供定期IDataReader
成员的异步口味的新界面...但是,至少,他们已经提供了一个基类,它已经是
System.Data.DataTableReader
System.Data.EntityClient.EntityDataReader
:很多框架类派生System.Data.Odbc.OdbcDataReader
System.Data.OleDb.OleDbDataReader
System.Data.OracleClient.OracleDataReader
System.Data.SqlClient.SqlDataReader
...和第三方ADO.NET提供商'IDataReader
也可能衍生DbDataReader
。
“SQL团队不理解OOP”的部分无论如何都是一个非常大胆的声明:\ –
@MatiaszFidemraizer是的,不应该这么说。 –