当数据存在时,LINQ Query始终给出nullref异常

时间:2011-06-20 16:11:11

标签: asp.net linq entity-framework entity nullreferenceexception

我有以下查询返回未将对象引用设置为对象错误的实例:

    (From u In db.Customers Where u.CustomerEmail Like UserName.Text Select u.CustomerEmail).ToString
(From u In db.Customers Where u.CustomerEmail Like UserName.Text Select u).Single

如果我使用相同的值进行sql select,我会得到所需的数据:

(select CustomerEmail from dbo.Customers where dbo.CustomerEmail like @UserName) 

请指出我的语法错误。

感谢。

2 个答案:

答案 0 :(得分:0)

如果在查询后执行ToList()调用会发生什么。你看到了预期的结果吗?如果你没有并且返回null(这是不正确的,因为你期望一个空的IEnumerable)这将解释异常。

尝试从代码中删除使用过的持久性框架,看看会发生什么。

答案 1 :(得分:0)

采取第一个声明

(From u In db.Customers Where u.CustomerEmail Like UserName.Text Select    u.CustomerEmail).ToString

如果

,这可以给出null异常
db is null

db.Customers is null

UserName is null

我认为就是这样。

ToString命令是否实际执行查询?我不知道EntityFramework,但如果像Linq2Sql一样,它返回sql查询,那么这不应该抛出null异常。如果它实际执行了查询,那么假设u.CustomerEmail被定义为一个字符串,那么我再也不认为这会抛出一个null异常。

如果这是一个缺少数据的情况,那么你仍然不会期望一个null异常。 Single可能会抛出'Sequence contains no elements'错误。