Отладка запроса на дозвуковой выбор - PullRequest
1 голос
/ 05 октября 2009

У меня есть дозвуковой запрос, который не возвращает никаких значений. Я думаю, что проблема в моем предложении where, хотя я не уверен, почему.

Что я действительно ищу, так это способ отладки запроса, чтобы увидеть SQL, который на самом деле выплевывает Subsonic. Я знаю, что был способ сделать это с помощью объекта Query с Inspect (), но я использую объекты Select (или, возможно, также могу использовать SQLQuerys), потому что мне нужны объединения. Есть ли какая-либо опция inspect () для Subsonic Select?

Вот код, который я использую:

Dim qry As New [Select]("Contract_NO")
  qry.From(<table1>.Schema)
  qry.InnerJoin(<table2>.<table2columnA>, <table1>.<table1columnA)
  qry.Where(NonInfoleaseLessor.Columns.LessorCode).Like("mystring")

Если я закомментирую строку where, я получу полный список результатов. Ему что-то не нравится, но я вручную запустил запрос к базе данных с предложением where, и он работает. Как я могу увидеть, в чем разница?

Ответы [ 4 ]

3 голосов
/ 05 октября 2009

Проблема с вашим запросом заключается в том, что вы должны использовать Contains ("mystring") вместо Like ("mystring").

Лучший способ увидеть SQL - использовать метод запроса BuildSqlStatement ().

1 голос
/ 05 октября 2009

пожалуйста, попробуйте использовать Like("%mystring%")

1 голос
/ 05 октября 2009

Используйте [a] профилировщик, чтобы увидеть, какой SQL фактически выполняется для базы данных.

Как заметил Адам:

.Like("mystring")

скорее всего должно быть

.Like("%mystring%")
0 голосов
/ 05 октября 2009

Это может иметь какое-то отношение к выбранному вами предложению или к тому, какое имя столбца вы используете. У Subsonic есть пара имен столбцов

OBJECT.xyzColumn

OBJECT.xyzColumn.QualifiedName

OBJECT.Columns.xyz

Раньше мне приходилось играть с ними, чтобы получить нужные мне значения.

...