Quando si utilizza il metodo SqlCommand.ExecuteReader()
, ReSharper mi dice che ho una possibile eccezione NullReference quando utilizzo l'oggetto SqlDataReader in seguito.Quando SqlCommand.ExecuteReader() restituisce null?
Quindi, con il seguente codice:
using (SqlConnection connection = GetConnection())
{
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = ; //snip
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
//snip
}
}
}
}
La while (reader.Read())
linea è sottolineata.
La mia domanda è quando il lettore dovrebbe mai essere nullo? Non l'ho mai incontrato e la documentazione non dice che potrebbe essere. Dovrei controllare se è nullo o è sicuro ignorarlo?
E perché ReSharper potrebbe pensare che potrebbe essere nullo, quando ad esempio mi consente di utilizzare SqlCommand senza raccomandare che venga controllato per null? Suppongo che ci sia un attributo sul metodo ExecuteReader.