Данные пустые.Этот метод или свойство нельзя вызывать для значений Null.в System.Data.SqlClient.SqlBuffer.get_String () - PullRequest
0 голосов
/ 21 июня 2019

Я получаю следующую ошибку

"Данные имеют значение NULL. Этот метод или свойство нельзя вызывать для значений NULL. В System.Data.SqlClient.SqlBuffer.get_String ()"

когда я выполняю следующую команду.

 return objDB.Employees.ToList();

любезно кто-нибудь посоветует мне постоянное решение "как получить нулевые поля из БД с помощью LINQ.

Я получил эту ошибку, когда есть хотя бы одно поле нулевое.

спасибо

Я делаю это в BLAZOR.

public List<Employee> GetAllEmployees()
        {
            try
            {
                return objDB.Employees.ToList();
            }
            catch
            {
                throw;
            }
        }

1 Ответ

0 голосов
/ 21 июня 2019

Эта ошибка не имеет ничего общего с Blazor.

Эта ошибка возникает, когда столбцы БД имеют значения NULL. Вы решаете эту проблему либо в базе данных, либо на клиенте.

Используйте ISNULL(column, '') в своих запросах к столбцам, которые могут возвращать ноль, например:

SELECT FirstName, LastName, ISNULL(MiddleName ,'') FROM Employee

На клиенте, если вы используете SqlDataReader, вы можете использовать следующий код для извлечения значений, которые не равны нулю.

while (reader.Read()) {
            Console.Write(reader.GetString(reader.GetOrdinal("FirstName")));
            // display middle name only of not null
            if (!reader.IsDBNull(reader.GetOrdinal("MiddleName")))
               Console.Write(" {0}", reader.GetString(reader.GetOrdinal("MiddleName")));
            Console.WriteLine(" {0}", reader.GetString(reader.GetOrdinal("LastName")));
         }

Надеюсь, это поможет ...

...