2013-10-24 33 views
0

我想在NH標準中使用Expression.Sql,但重載不起作用,並且沒有可找到的文檔。具有多個參數的NHibernate Expression.Sql

我在哪裏輸入參數?

我有一個NH DetachedCriteria,但我必須使用SQL表達式,因爲eit在2個方向上是不可取的。

所以我添加此

  criteria.Add(Expression.Sql(@"(
        UPPER(RIGHT(RTRIM(LTRIM('?')), ?)) like '%'+UPPER(RIGHT(RTRIM(LTRIM(?)), ?)) 
        OR UPPER(RIGHT(RTRIM(LTRIM(?)), ?)) like '%'+UPPER(RIGHT(RTRIM(LTRIM('?')), ?)) 
       ) and len('?') >= ?", 
          new Object[]{ 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
           "aaa", 
          } 
          , new NHibernate.Type.IType[]{ 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String, 
           NHibernateUtil.String 
          } 
       )); 

我不斷收到索引越界異常

的我出示擔保的參數相匹配。即使是這個錯誤,我也會看到一個帶有110'?'和10個參數的查詢。

我怎麼可能做trhios?

+0

可能的重複[NHibernate:hql到標準查詢 - 需要幫助](http://stackoverflow.com/questions/1438595/nhibernate-hql-to-criteria-query-help-需要)或http:// stackoverflow .com/questions/1891901/nhibernate-hql-with-named-parameter – MichaC

+0

不應該給RIGHT一個整數作爲第二個參數嗎?另外,由於整個查詢的標準似乎不變,所以我很困惑。它似乎並不涉及處理的行(對象名不能是sql查詢中的參數)。一個錯字:最後一個「」aaa「」後面的逗號。 – jbl

回答

1

幾個問號在其周圍的報價:'?'

這些不會被解釋爲參數佔位符,但含有一個問號字符串文字。所以你真的只有7個參數,而不是10個,但是你傳遞了10個值。