Обобщение создания параметров команды при использовании нулевых дат - PullRequest
1 голос
/ 19 августа 2009

Я пытаюсь обобщить (если это даже слово) следующую строку кода:

oCmd.CreateParameter("@Date", SqlDbType.DateTime, updateDate > DateTime.MinValue ? updateDate : SqlDateTime.Null);

Первым изменением, очевидно, является SqlDbType.DateTime, просто DbType.DateTime, что мне делать с SqlDateTime.Null?

Если я поменяю на:

oCmd.CreateParameter("@Date", DbType.DateTime, updateDate > DateTime.MinValue ? updateDate : null);

Я получаю симпатичный маленький красный волнистый знак того, что нет неявного преобразования между DateTime и null. Кажется, я не могу найти общий способ сделать это - возможно ли это?

Из-за несовместимости источника параметра updateDate и этой строки кода я не могу просто использовать updateDate:

oCmd.CreateParameter("@Date", DbType.DateTime, updateDate);

Довольно часто дата, которую мы получаем из вызывающего кода, выходит за допустимый диапазон дат SQL Server, и это приводит к сбою команды. Следовательно, должна быть сделана проверка - отсюда и причина включения троичной проверки.

Единственный способ, которым я могу это сделать, - это прорваться к нескольким линиям, но я надеюсь, что у кого-то есть хитрость в рукаве, поэтому я могу оставить это как одну линию.

Заранее спасибо

1 Ответ

3 голосов
/ 19 августа 2009

Попробуйте это:

oCmd.CreateParameter("@Date", DbType.DateTime,
    updateDate > DateTime.MinValue ? (object)updateDate : DBNull.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...