我最近開始使用Telerik的網格(用於ASP.NET MVC)。 '基於Linq的表達引擎'爲您做了所有繁重的工作:分頁,排序和過濾。它只需要與這樣的存儲庫方法聯繫起來:Telerik的電網<-> NHibernate的
public IEnumerable GetBlas() { return Session.Query(); }
現在我有以下問題。我想使用ICriteria和Restrictions.In(「x」,list.ToArray()),其中列表是IList類型,並由另一個進程填充。問題是列表可能包含數百個值,並且這可能會引發異常,因爲生成的SQL代碼的「IN PART」(例如IN(1,2,...,10000))可能太長。
有沒有辦法實現這個,而無需切換到純SQL和處理所有的查詢字符串等Telerik的電網發送方式是什麼?希望這是有道理的。
謝謝。
基督教
我不知道我明白什麼是問題;你擔心你的'in'子句會包含太多的值?在這種情況下,你可以將它分成夾頭,即'Restrinctions.In(「X」,sublist1)或Restrictions.In(「X」,sublist2)等 –
這仍將導致SQL代碼(由NHibernate的生成)我相信這太長了!但是我不確定SQL服務器是否不喜歡sql的長度或參數的數量...... – cs0815
不確定關於sql server;這在Oracle上適用於我。我建議你試一試,看看它是如何發展的。 –