Таблица является nullable DateTime, но DataSet выдает исключение?

Как правило, включайте свои включения в файлы .cpp, когда это возможно, и только в файлы .h, когда это невозможно.

Вы можете использовать предварительные объявления для устранения необходимости включать заголовки из других заголовков во многих случаях: это может помочь сократить время компиляции, что может стать большой проблемой по мере роста вашего проекта. Это хорошая привычка на раннем этапе, потому что попытка разобраться с этим на более позднем этапе (когда это уже является проблемой) может стать полным кошмаром.

Исключением из этого правила являются шаблонные классы (или функции): чтобы использовать их, вам нужно увидеть полное определение, что обычно означает помещение их в заголовочный файл.

21
задан Amy 28 October 2009 в 17:18
поделиться

3 ответа

Типизированные наборы данных не поддерживают типы, допускающие значение NULL. Они поддерживают столбцы, допускающие значение NULL, .

Генератор набора типизированных данных создает свойства, не допускающие значения NULL, и связанные методы для обработки значений NULL. Если вы создаете столбец MyDate типа DateTime и AllowDbNull , установленный на true , подкласс DataRow будет реализовывать свойство DateTime , не допускающее значения NULL, с именем MyDate , метод SetMyDateNull () и метод IsMyDateNull () . Это означает, что если вы хотите использовать в своем коде тип, допускающий значение NULL, вы должны сделать следующее:

DateTime? myDateTime = myRow.IsMyDateNull() ? null : (DateTime?) row.MyDate;

Хотя это полностью не отменяет цели использования типизированных наборов данных, это действительно отстой. Это' s разочаровывает то, что типизированные наборы данных реализуют столбцы, допускающие значение NULL, менее пригодным для использования, чем, например, методы расширения System.Data .

Это особенно плохо, потому что наборы типизированных данных используют типы, допускающие значение NULL, в некоторых местах - например, метод Add Row () для таблицы, содержащей столбец DateTime, допускающий значение NULL, описанный выше, будет принимать параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени для полной интеграции этих двух по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

менее удобны, чем, например, методы расширения System.Data .

Это особенно плохо, потому что типизированные наборы данных действительно используют типы, допускающие значение NULL, в некоторых местах - например, ] Метод Add Row () для таблицы, содержащей описанный выше столбец DateTime, допускающий значение NULL, примет параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени полностью интегрировать эти два по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

менее удобны, чем, например, методы расширения System.Data .

Это особенно плохо, потому что типизированные наборы данных действительно используют типы, допускающие значение NULL, в некоторых местах - например, ] Метод Add Row () для таблицы, содержащей описанный выше столбец DateTime, допускающий значение NULL, примет параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени для полной интеграции этих двух по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

Особенно плохо, потому что типизированные наборы данных действительно используют типы, допускающие значение NULL, в некоторых местах - например, метод Add Row () для таблицы, содержащей столбец DateTime, допускающий значение NULL. описанный выше будет иметь параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени для полной интеграции этих двух по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

Особенно плохо, потому что типизированные наборы данных действительно используют типы, допускающие значение NULL, в некоторых местах - например, метод Add Row () для таблицы, содержащей столбец DateTime, допускающий значение NULL. описанный выше будет иметь параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени полностью интегрировать эти два по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

Метод Row () для таблицы, содержащей столбец DateTime, допускающий значение NULL, описанный выше, примет параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени полностью интегрировать эти два по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

Метод Row () для таблицы, содержащей столбец DateTime, допускающий значение NULL, описанный выше, примет параметр DateTime? .

Давным-давно я спросил об этой проблеме на форумах MSDN, и в конечном итоге менеджер проекта ADO объяснил, что типы, допускающие значение NULL, были реализованы одновременно с типизированными наборами данных, и у его команды не было времени полностью интегрировать эти два по дате отгрузки .NET 2.0. И, насколько я могу судить, с тех пор они не добавляли новых функций к наборам типизированных данных.

41
ответ дан 29 November 2019 в 20:39
поделиться

Похоже, что Designer неверно указал тип базы данных для столбца.

Откройте xsd Designer , нажмите F4 , чтобы открыть окно свойств . Выберите соответствующий столбец и установите Nullable (или что-то в этом роде, не помните точное имя) в значение true.

1
ответ дан 29 November 2019 в 20:39
поделиться

The System.DateTime Object is not nullable. To make a DateTime nullable make it a DateTime? (put a ? after DateTime)

DateTime? nullableDateTime = null;
-2
ответ дан 29 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

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