2011-05-09 45 views
1

我有一個查詢,我只對行計數感興趣,但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長度和在運算符中?

回答

1

是否有使用任何功能類似這樣的匹配任何行,你可以理解:

var a = from b in table where b.something = 5 select b; 
var isMatch = a.Any(); 
+0

這爲我工作,謝謝。 – Staale 2011-05-09 07:47:08