我有一个查询,我只对行计数感兴趣,但NHibernate产生的查询不适用于Sybase。我已经有了一个自定义的Sybase方言,但我无法找到覆盖rowcount的位置。LINQ中的NHibernate RowCount产生SQL异常
考虑下面的代码:
var a = from b in table where b.something = 5 select b
var rows = a.Count
生成类似这样的SQL:
select cast(count(*) as INTEGER) as p1 from table
我不知道为什么NHibernate的希望蒙上计数结果,我也能覆盖方言或其他地方,所以NHibernate不包括演员。计数的结果可以转换为整数。
如果我使用QueryOver,事情工作完美。然而,问题是,我的条件取决于一个字符串的长度(是的,分贝设计可能会更好,但我目前可以不改变它)。在条件工作中使用linq调用.Length字符串。但是,我无法在QueryOver表达式中使用字符串长度作为条件。我还需要一个包含操作,它与linq一起使用,但不是QueryOver。
有没有办法来重写如何生成计数查询,所以它会工作? 我只是有兴趣,如果有任何行匹配,而不是计数,有没有不同的方式做到这一点? 可以改为QueryOver?接口使用SQL长度和在运算符中?
这为我工作,谢谢。 – Staale 2011-05-09 07:47:08