Я вижу это:
?dataReader["Id"].GetType().FullName
"System.Guid"
, а также это:
в записи 2, для чтения данных будет возвращено ""
Эти две вещинесовместимыЯ подозреваю, что у вас действительно есть столбец Guid
, а запись 2 возвращает NULL
, который, в свою очередь, отображается как DBNull.Value
в считывателе, и вызов .ToString()
для результата DBNull.Value
приводит к пустой строке, которую вы наблюдаетездесь.
Если это правда, вы можете сделать это:
while (dataReader.Read())
{
if (dataReader["Id"] != DBNull.Value)
{
d.id = (Guid)dataReader["Id"];
}
else
{
//get an empty string
}
}
Теперь проблема в том, что else
блок.Вопрос гласит:
Как добавить String Empty без исключения
Ответ: Вы не можете .C # является строго типизированным языком, и мы уже видели, что свойство d.id
является System.Guid
. Вы не можете поместить колышек в форме строки в отверстие в форме Guid. Вы должны оставить это поле пустым или определить какое-либо значение Guid по умолчанию, чтобы оно оставалось пустым, а затем изменить код в другом месте.чтобы отобразить пустую строку, а не Guid, значение соответствует выбранному по умолчанию.