Задать вопрос

Как добавить элемент в коллекцию из БД если поле в бд может быть null

class _Explain
{
        public int ID { get; set; }
        public string SelectType { get; set; }
        public string Table { get; set; }
        public string Type { get; set; }
        public string PossibleKeys { get; set; }
        public string Key { get; set; }
        public int KeyLen {get; set;}
        public string Ref { get; set; }
        public int Rows { get; set; }
        public string Extra { get; set; }
}
...
using (MySqlDataReader rdr = cmd.ExecuteReader())
{
                while (rdr.Read())
                {
                    expList.Add(new _Explain
                    {
                        ID = Convert.ToInt32(rdr["id"]),
                        SelectType = rdr["select_type"].ToString(),
                        Table = rdr["table"].ToString(),
                        Type = rdr["type"].ToString(),
                        PossibleKeys = rdr["possible_keys"].ToString(),
                        Key = rdr["key"].ToString(),
                        KeyLen = Convert.ToInt32(rdr["key_len"]),
                        Ref = rdr["ref"].ToString(),
                        Rows = Convert.ToInt32(rdr["rows"]),
                        Extra = rdr["Extra"].ToString()
});

Ошибка: Невозможно выполнить приведение данного объекта из DBNull к другому типу.
  • Вопрос задан
  • 5512 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
@carbon88
.NET developer/ORM developer
во-первых, потрудитесь описывать подробнее в следующий раз.
во вторых, можно попробовать такое

SomeValue = (<поле, которое может быть null в базе> is DBNull) ? null : <сценарий когда не DBNull>
тут мы в скобках проверяем что тип объекта DBNull, после вопроса идет выражение при истинности условия, после двоеточия идет выражение при ложности условия.
Например,
var nullableValue = (rdr["type"] is DBNull) ? null : rdr["type"].ToString();

ну и соответственно использовать тип который может быть null
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
public string ?Type { get; set; }
Посмотрите про nullable types
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы