属性HasRows可用于iDataReader吗?

问题描述 投票:0回答:1

我问上面的问题是因为我在QuickWatch窗口中看到了一些属性HasRows。

我正在修改别人的代码,需要遵循建立的模式。我必须查询SQL Server表以从配置表中检索一行,并决定首先在测试控制台应用程序中对其进行编码。我还决定使用SQLClient类型,并使用属性HasRows:

....
using (SqlDataReader rdr = cmd.ExecuteReader())
{
    if (rdr.HasRows)
    {
      ....

当我将代码移动到另一个项目时,我注意到使用了IDataReader,并且Intellisense说HasRows属性不可用,所以我使用了while循环,即使我只有一行返回:

....
using (IDataReader rdr = cmd.ExecuteReader())
{
   while (rdr.Read())
   {
      ....

但是当我在IDataReader rdr上快速观察时,我看到了HasRows属性!

enter image description here

那么我可以轻松地获取IDataReader的HasRows属性吗?如果确实存在?

sqldatareader idatareader
1个回答
0
投票

不,你不能。 HasRows是DbDataReader的抽象方法,而IDataReader没有它。即使如此,DbDataReader实现了IDataReader,它也是在DbDataReader中实现的,而不是在接口本身中实现的。

在代码中使用DbDataReader而不是接口。

© www.soinside.com 2019 - 2024. All rights reserved.