2011-11-19 26 views
4

如何指定Nhibernate映射文件中存儲過程的字符串輸入參數的長度。Nhibernate當參數值超過4000個字符時,截斷存儲過程輸入參數

這是我的映射內容

<sql-query name="Sp_News" resultset-ref="NewsPackResultSet" cacheable="false"> 

    <query-param name="SearchString"  type="System.String" /> 
    <query-param name="StartDate"   type="System.DateTime" /> 

       exec dbo.Sp_News:SearchString,:StartDate 

</sql-query> 

當SearchString在參數的長度超過4000個字符,NHibernate的截斷參數值。我怎樣才能解決這個限制?

任何幫助,將不勝感激。

+1

我認爲這件事情,你甚至調用存儲過程之前,應該驗證。爲什麼一個搜索參數無論如何都會超過幾個字符或單詞? – Phill

+0

這仍然聽起來像你應該在前面驗證的東西。如果你正在向存儲過程發送數據,你不應該因爲它太長而發送「可能」失敗的東西。如果您要存儲文章,爲什麼要將其限制爲4000個字符? – Phill

+0

嗨,你的問題解決了嗎?我有同一個:( – Nagg

回答

6

發現這個問題,也發現了答案:

IQuery query = session.GetNamedQuery("Sp_News"); 
query.SetParameter("SearchString", longString, NHibernateUtil.StringClob); 

NHibernateUtil.StringClob是關鍵:-)

+0

Nagg:非常感謝,它解決了我的問題。 –