Для IDataReader
существует метод проверки на нулевые значения. Вы можете заключить это в метод расширения. Я вдали от своего компьютера, поэтому извиняюсь за любые ошибки, но это выглядит примерно так ...
public static class DataReaderExtensions
{
public static string GetNullableString(this SqlDataReader dataReader, int ordinal)
{
return dataReader.IsDBNull(ordinal))
? (string)null
: dataReader.GetString(ordinal);
}
}
И вам нужен один для int
, который был бы таким:
public static int? GetNullableInt32(this SqlDataReader dataReader, int ordinal)
{
return dataReader.IsDBNull(ordinal))
? (int?)null
: dataReader.GetInt32(ordinal);
}
Вы можете использовать это так ...
int idOrdinal=dr.GetOrdinal("Id");
while (dr.Read())
{
Id = dr.GetNullableInt32(idOrdinal);
}