亚音速 - Where子句中的位操作

时间:2009-05-20 14:19:11

标签: subsonic where-clause bit

我正在尝试做这样的事情:

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

错误信息是:

'&'附近的语法不正确。

必须声明标量变量“@Deleted”。

是否可以使用SubSonic做到这一点?

3 个答案:

答案 0 :(得分:0)

  

必须声明标量变量   “@Deleted”

第二个错误是由您正在查询的表上使用逻辑删除引起的(该表具有isDeleted或Deleted列)。

但我正在查看代码,我不确定该参数是如何进入的。从我所知道的,SqlQuery.GetRecordCount方法不会调用CheckLogicalDelete()。该错误消息是否无关?

答案 1 :(得分:0)

这似乎是SubSonic在生成要执行的SQL时命名它的参数的方式中的一个错误。

发生的事情是,SubSonic正在查看“Type& 1”,然后创建一个参数来与被叫@ Type& 10进行比较,这不是一个有效的SQL参数名称。因此,您最终将从原始查询中获得以下SQL。您应该向http://code.google.com/p/subsonicproject/

提交错误

与此同时,您可以使用内联查询解决此问题:

http://subsonicproject.com/docs/Inline_Query_Tool

答案 2 :(得分:-1)

关于你想要完成什么,这有点模糊,但这是最好的猜测。

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