Как я могу включить DBNull в качестве значения в мой строго типизированный набор данных?

StackOverflow https://stackoverflow.com/questions/1461622

Вопрос

Я создал строго типизированный набор данных (MyDataSet) в моем приложении .NET.Для простоты мы скажем, что у него есть одна таблица данных (MyDataTable) с одним столбцом (MyCol).Для свойства MyCol DataType установлено значение "System.Int32", а для свойства AllowDBNull - значение "true".

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

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();

Прекрасно.Однако, когда я пытаюсь установить значение DBNull:

myRow.MyCol = DBNull.Value;

Мне сказали, что я не могу этого сделать...что это не может привести это к int.В некотором смысле это имеет смысл, поскольку я определил его как int ... но тогда как я могу вставить туда DBNull ?Разве я не должен иметь там DBNull?Разве не для этого предназначено свойство AllowDBNull?

Очевидно, я упускаю что-то фундаментальное.Кто-нибудь может помочь объяснить, что это такое?

Редактировать: Я также попытался ввести "int?" в качестве типа данных, но Visual Studio выдает ошибку, когда я ввожу ее, говоря, что "Для столбца требуется допустимый тип данных".

Это было полезно?

Решение

у вас есть в классе MyDataTableRow сгенерированный метод с именем:SetMyColNull().

myRow.SetMyColNull();

вы также можете сделать :

myRow["MyCol"] = DBNull.Value;

потому что myRow["MyCol"] относится к типу object

РЕДАКТИРОВАТЬ (добавлено вопросом OP):

Существует также параллельный метод, сгенерированный для обратного считывания этого значения, IsMyColNull().

Другие советы

Есть две вещи.

Разрешение DBNull - это отдельная настройка от возможности установки значения в DBNull.

Я использовал только интерфейс DataSet XSD для настройки этого...но мне пришлось не только установить "AllowDBNull = true", но и установить "NullValue = (null)".Первоначально "NullValue" было присвоено значение "(Исключение)".Это означало, что набор данных будет принимать bieng .Fill()ed с значением null, но не позволит вам вручную установить значение null .

Не уверен, что это ваша проблема, но звучит похоже.

просто перейдите в режим конструктора в dataset и щелкните правой кнопкой мыши на поле, для которого вы хотите включить значение null, и выберите свойства , в окне свойств установите значение AllowDBNull равным True, а значение NullValue равным (NULL) ;у меня это работает правильно !с наилучшими пожеланиями !

int не принимает значение null, но int?(заполняемая версия) делает.Я думаю, вам нужен этот тип данных вместо этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top