c # (3.5) использовать TableAdapters для чтения / записи нулевых значений DateTime в базу данных - PullRequest
2 голосов
/ 18 ноября 2010

Я подключаюсь к базе данных с использованием 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, чтобы позволить мне выполнить запрос к таблице, который может иметь дело с нулями в базе данных?

1 Ответ

0 голосов
/ 08 декабря 2010

Решение, которое я нашел, состояло в том, чтобы использовать функцию Oracle TO_CHAR () и сказать адаптеру таблицы ожидать строковое значение

SELECT to_char(NULL_DATE_FIELD,'dd/mm/yyyy HH24:MI:SS') FROM *

Это означает, что в используемом коде должно произойти какое-то преобразование. Не идеально, хотя!

...