ASP.net: как проверить LINQ-запрос - PullRequest
3 голосов
/ 10 ноября 2009

Как я могу протестировать LINQ Query, например:

var vUser = (from u in this.dbName.aspnet_Users
                         where u.UserName.Equals(this.wCreateUser.UserName)
                         select u).Single();

Я получаю пустое исключение для vUser, однако я уверен, что такой пользователь существует.

Ответы [ 2 ]

4 голосов
/ 10 ноября 2009

Используйте профилировщик SQL и посмотрите, какой SQL запускается вашим кодом. Вы можете попробовать LinqPad , чтобы выполнить запрос linq к БД.

3 голосов
/ 10 ноября 2009

Запись должна была бы существовать, или исключение пришлось бы генерировать во время оценки лямбды, в противном случае было бы сгенерировано исключение

.

Последовательность не содержит элементов.

Получаете ли вы доступ к каким-либо свойствам объекта vUser после запроса или объект this.wCreateUser может иметь значение null?

Редактировать : для комментариев ..

Если исключение состоит в том, что последовательность не содержит элементов, генерируемый запрос не возвращает результат. Я бы порекомендовал вам проверить сгенерированный запрос и протестировать его непосредственно на SQL Server.

Вы можете сделать это несколькими способами.

  1. Откройте SQL Profiler и посмотрите запрос выполняется.
  2. Присоедините TextWriter к DataContext.Log, чтобы вы могли видеть вывод запроса (пример ниже) ..
  3. Используйте LINQPad в качестве другого предложенного ответа.

.

StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
this.dcLAUNCHOnline.Log = writer;
//Execute Query..
//sb.ToString(); //will contain the sql produced by the LINQ Query
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...