数据为空。不能在Null值上调用此方法或属性。在System.Data.SqlClient.SqlBuffer.get_String()

时间:2019-06-21 00:19:48

标签: c# entity-framework exception null

我遇到以下错误

  

“数据为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 :(得分:0)

此错误与Blazor无关。

当您的数据库列具有NULL值时,会发生此错误。您可以在数据库或客户端上解决此问题。

在查询中可能会返回null的列上使用ISNULL(column, ''),例如:

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

在客户端上,如果您使用的是SqlDataReader,则可以使用以下代码提取不为null的值。

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")));
         }

希望这对您有帮助...