【问题标题】:ReSharper show warning with SqlDataReaderReSharper 使用 SqlDataReader 显示警告
【发布时间】:2010-06-14 07:28:53
【问题描述】:

当我写这样的东西时:

using (var connection = new SqlConnection("ConnectionString"))
{
    using(var cmd= new SqlCommand("Command"))
    {
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
            }
        }
    }
}

ReSharper 在reader.Read() 上显示警告,并告诉读者可以是null

但在什么情况下它可以为空?据我所知,如果命令不返回任何内容,则阅读器不为空,它什么都没有。

【问题讨论】:

  • +1 我也注意到了。也许你应该直接问 JetBrains 的人。

标签: c# .net resharper sqldatareader


【解决方案1】:

鉴于这在 YouTrack 上被报告为一个错误(两次 - herehere),看起来 R# 附带的 nullity 注释在这方面存在缺陷。

查看您的 ReSharper_installation_dir\Bin\ExternalAnnotations 文件夹 - 这是安装注释文件的位置。对我来说,使用 v5,这里有一个文件 System.Data\System.Data.Nullness.xml,其中包含此注释:

<member name="M:System.Data.SqlClient.SqlCommand.ExecuteReader">
  <attribute ctor="M:JetBrains.Annotations.CanBeNullAttribute.#ctor" />
</member>

如果您自己认为这是错误的,并且 SqlCommand.ExecuteReader 永远不会返回 null,则应将其更改为

<member name="M:System.Data.SqlClient.SqlCommand.ExecuteReader">
  <attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
</member>

【讨论】:

    【解决方案2】:

    我认为它不能为 null - 但 resharper 不知道 SqlCommand.ExeuteReader() 永远不会返回 null。
    据我所知,他们使用一些 xml 来告诉女巫函数可能返回也可能不返回 null,并且可以在那里设置。 我不知道 xml 的名称和位置。

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 1970-01-01
      • 2015-11-15
      • 2012-05-05
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多