Если вы использовали генераторы Visual Studio и все правильно обнаружено для вашей таблицы, то в столбце DataRow со строгим типом DataRow будет сгенерировано следующее значение:
- Открытое свойство, названное для таблицы Имя столбца ("ParentCategoryID")
- Открытый метод, который обнаруживает пустую запись ("bool IsParentCategoryIDNull ()")
- Открытый метод, который "обнуляет" запись ("void SetParentCategoryIDNull ()")
Учитывая, что ваша строго типизированная таблица называется "My" (генерирует MyDataTable
и MyDataRow
), ваш DataSet
называется MyDataSetType
, а экземпляр называется myDataSet
:
MyDataSetType.MyRow row = myDataSet.My.NewMyRow();
row.ParentCategoryID = Guid.Empty; //OPTION 1: explicitly set GUID
row.SetParentCategoryIDNull(); //OPTION 2: explicitly set Null
myDataSet.My.AddMyRow(row);
Вы также можете посмотреть на реализацию SetParentCategoryID
, чтобы увидеть, что используется для "обнуления".
Далее, чтобы обнаружить «нулевого гида»:
if (row.IsParentCategoryIDNull())
{
//Do something spectacular
}
Итак, теперь у вас есть три различных типа значений для представления состояния:
- пустая запись в базе данных / наборе данных (без родительской категории)
- ненулевая запись в базе данных (предположительно, родительская категория)
- ненулевая запись в базе данных, которая является пустым (
Guid.Empty
) guid (???)
Когда я впервые столкнулся с этой проблемой, я подумал, что Guid.Empty
следовало использовать для представления пустой записи в базе данных, но для этого потребовалась бы пользовательская обработка типа guid. Используя функции-обертки, строго типизированный набор данных может обеспечить согласованную обработку любого числа столбцов, допускающих значение NULL, на основе типов структурного стиля.