Я давно использую DataSets, узнал их наизнанку, даже до такой степени, что у меня нет проблем с редактированием XML-кода напрямую, чтобы преодолеть ограничения дизайнера при работе с некоторыми базами данных, не относящимися к мейнстриму, но Я ищу здесь что-то для проверки смысла ..
Я почти уверен, что в прошлом, когда я устанавливал тип данных столбца как примитивный тип, такой как Int32
, DateTime
, Guid
, а также объявили AllowDbNull=true
, что код, сгенерированный msdatasetgenerator, сгенерировал Add<tablename>Row()
, который имел int?
/ DateTime?
/ Guid?
в аргументах, так что нулевой может быть передан и внутри, набор данных использует DBNull.Value и т. д., когда запись в базу данных и т. д.
Я только что сгенерировал несколько наборов данных в конструкторе для VS2017 pro, и ни один из примитивных столбцов, AllowDBNull=true
, не имеет аргумента, допускающего обнуление в Add<tablename>Row()
У меня нет каких-либо старых проектов, которые должны были бы перепроверить в данный момент; Кто-нибудь знает, если что-то изменилось с последними версиями генератора набора данных, которые отключили возможность обнуляемых аргументов в методе Add<tablename>Row
?
Редактировать: Здесь Таблица обнуляется DateTime, но DataSet выдает исключение? Роб Россни, кажется, подтверждает то, что, как я думал, имело место, когда он говорит:
Особенно плохо, потому что типизированные наборы данных в некоторых местах используют обнуляемые типы - например, метод AddRow () для таблицы, содержащей столбец DateTime с обнуляемым значением, описанный выше, будет принимать DateTime? параметр.
(Ответы "нет, на самом деле вы сходите с ума, AddRow () никогда не обнулялся .. Вы думаете о другом методе BlahBlah ()" в порядке .. Даже просто "он никогда не поддерживал это, вы сходите с ума" тоже хорошо. Надеемся, что реальный ответ - "вы забыли также установить свойство ABC
для DataColumn; заставляет генератор генерировать пустые аргументы, а не AllowDbNull=true
"
Обратите внимание, что я не спрашиваю об установке типа DataColumn, например, в Nullable - я знаю, что это невозможно; но я убежден, что для объявленных обнуляемых примитивных столбцов сгенерированный код был полезен в некоторых местах, позволяя передавать значение NULL и спорить с ним в сгенерированном дизайнером коде .. ")