Дозвуковая - битовая операция в предложении Where - PullRequest
0 голосов
/ 20 мая 2009

Я пытаюсь сделать что-то вроде этого:

int count = new Select().From(tblSchema).Where("Type & 1").IsEqualTo("1").GetRecordCount();

И сообщение об ошибке:

Неверный синтаксис рядом с '&'.

Необходимо объявить скалярную переменную "@Deleted".

Возможно ли это сделать с помощью SubSonic?

Ответы [ 3 ]

0 голосов
/ 21 мая 2009

Должен объявлять скалярную переменную "@Deleted"

Вторая ошибка будет вызвана использованием логических удалений в запрашиваемой таблице (в таблице есть столбец isDeleted или Deleted).

Но я просматриваю код, я не уверен, как этот параметр попадает туда. Метод SqlQuery.GetRecordCount не вызывает CheckLogicalDelete (), насколько я могу судить. Это сообщение об ошибке не связано?

0 голосов
/ 22 мая 2009

Кажется, что это ошибка в том, как SubSonic называет свои параметры, когда генерирует SQL для выполнения.

То, что происходит, это то, что SubSonic просматривает «Type & 1» и затем создает параметр для сравнения с именем «@ & amp; Таким образом, вы получите следующий SQL из исходного запроса. Вы должны отправить сообщение об ошибке на http://code.google.com/p/subsonicproject/

Пока что вы можете обойти ошибку, используя встроенный запрос:

http://subsonicproject.com/docs/Inline_Query_Tool

0 голосов
/ 20 мая 2009

Это немного нечетко относительно того, что вы пытаетесь достичь, но вот лучшее предположение.

int count = new Select().From(tbl.Schema).Where(tbl.TypeColumn).IsEqualTo(true).GetRecordCount(); 
...