2009-05-20 2 views
0

Я пытаюсь сделать что-то вроде этого:Дозвуковые - операция Бит в тех случаях, когда пункт

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

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

Неправильный синтаксис около «&».

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

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

+0

Это не очень понятно, что вы пытаетесь достичь не могли бы вы добавить Выпишите оператор SQL, который вы хотите создать SubSonic –

+0

Я собираюсь угадать, выберите count (*), где type & 1 – rball

ответ

-1

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

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

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

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

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

0

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

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

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

http://subsonicproject.com/docs/Inline_Query_Tool

Смежные вопросы