Nullable DateTime и база данных

У меня есть объект с нулевым значением времени в С#.

DateTime? StartDate = new DateTime();

Затем я проверяю отображаемое пользователем значение, чтобы определить, применима ли дата к этой записи:

if (Complete == "N/A")
{
    StartDate = null;
}

Теперь я прихожу к моему запросу, который может или не может вставлять нулевое datetime:

using (SqlCommand command = new SqlCommand(updateSql, db))
{
    command.Parameters.Add("@Date_Started", SqlDbType.DateTime).Value = StartDate;
}

Как вы, вероятно, ожидаете, если дата начала равна нулю, тогда я получаю сообщение об ошибке, что тип неверен. Какой лучший способ исходить отсюда?

Я считаю, что проверка startdate равна null, но я не уверен, как это сделать, когда тип является допустимым.

Ответ 1

Это будет передавать значение NULL базы данных в качестве параметра, если StartDate имеет значение null:

using (SqlCommand command = new SqlCommand(updateSql, db))
{
    command.Parameters.Add("@Date_Started", SqlDbType.DateTime).Value = (object)StartDate ?? DBNull.Value;
}

Ответ 2

using (SqlCommand command = new SqlCommand(updateSql, db))
{
    if (StartDate.HasValue())
        command.Parameters.Add("@Date_Started", SqlDbType.DateTime).Value
            = StartDate;
    else
        command.Parameters.Add("@Date_Started", SqlDbType.DateTime).Value 
            = DBNull.Value;
}