Я подключаюсь к базе данных с использованием VS2008 DataSets. Одна из таблиц в базе данных содержит столбец DateTime, который допускает нулевые значения (то есть тип: DateTime?)
MSDN Наборы данных категорически заявляет:
Структура Nullable или Nullable в настоящее время не поддерживается в наборе данных.
Однако на сайте MSDN для TableAdapters говорится, что TableAdaters МОЖЕТ поддерживать обнуляемые типы:
Адаптеры таблиц поддерживают обнуляемые типы Nullable (Of T) и T ?. Для получения дополнительной информации о обнуляемых типах ... Для получения дополнительной информации о обнуляемых типах в C # см. Использование обнуляемых типов (Руководство по программированию в C #).
Я в замешательстве!
В конструкторе DataSet я установил для свойства нарушающего столбца значение «AllowDBNull = True», но всякий раз, когда я запускаю запрос TableAdapter, который возвращает нулевой DateTime (SELECT * FROM UDF), я получаю следующее исключение: «ArguementOutOfRangeException: Параметры Year, Month и Day описывают непредставляемый DateTime. "
Одна идея, которая у меня возникла, состояла в том, чтобы изменить тип столбца на System.Object, чтобы правильно обрабатывать нулевые значения, а затем я могу выполнить преобразования в своем собственном коде, однако я по-прежнему получаю то же исключение, которое вызывается.
Этот вопрос подсказывает, как обращаться с пустыми значениями после возврата запроса, однако я не могу получить запрос для возврата.
Как я могу изменить TableAdapter и / или Dataset, чтобы позволить мне выполнить запрос к таблице, который может иметь дело с нулями в базе данных?