gpt4 book ai didi

c# - 为什么没有 SqlDataReader.ReadAsync() 接口(interface)

转载 作者:行者123 更新时间:2023-11-30 13:44:33 24 4
gpt4 key购买 nike

同时 SqlDataReader.Read()实现了 IDataReader.Read(),当使用像 ReadAsync() 这样的异步方法时,SqlDataReader 似乎没有接口(interface).

首先,如果我错了,请纠正我。

这有什么理由或理由吗?新的 async-await 有什么可以证明这里缺少接口(interface)的吗?只是有点莫名其妙。

最佳答案

虽然接口(interface)没有定义整个方法,但有一个通用的抽象类DbDataReader which defines ReadAsync .

不将 ReadAsync 作为 IDataReader 接口(interface)的一部分的最重要原因可能是为了避免向后兼容性方面的重大变化。

如果较新框架版本中的 IDataReader 会强制任何数据读取器 实现ReadAsync,则任何依赖于此的 ADO.NET 提供程序或框架-调用的接口(interface)根本不会实现它,这些实现将被破坏。

也许他们可以使用接口(interface)隔离原则,他们可以定义一个名为IDataReaderAsync 的新接口(interface),它可以提供常规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

关于c# - 为什么没有 SqlDataReader.ReadAsync() 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37779411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com