LINQ Query всегда дает исключение nullref, когда данные существуют - PullRequest
0 голосов
/ 20 июня 2011

У меня есть следующие запросы, которые возвращают ссылку на объект, не установленную для экземпляра ошибки объекта:

    (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 CustomerEmail from dbo.Customers where dbo.CustomerEmail like @UserName) 

Пожалуйста, не могли бы вы указать, где я ошибаюсь в синтаксисе.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 июня 2011

Принимая первое утверждение

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

Это может дать нулевое исключение, если

db is null

db.Customers is null

или

UserName is null

, и я думаю, что это все.

Действительно ли команда ToString выполняет запрос?Я не знаю о EntityFramework, но если, как Linq2Sql, он возвращает SQL-запрос, то это не должно выдавать пустое исключение.Если он на самом деле выполняет запрос, то, предполагая, что u.CustomerEmail определен как строка, опять же, я не думаю, что это когда-либо выдаст пустое исключение.

Если это был случай пропущенных данных, товы все равно не ожидаете нулевого исключения.Сингл может выдать ошибку «Последовательность не содержит элементов».

0 голосов
/ 20 июня 2011

Что произойдет, если вы сделаете вызов ToList () после запроса.Видите ли вы ожидаемые результаты?Если вы этого не сделаете и вернете нулевое значение (что неверно, так как вы ожидаете пустой IEnumerable), это объяснит исключение.

Попробуйте исключить из своего кода использованную постоянную среду, чтобы увидеть, что происходит.

...