我想爲了我的NHibernate的3.0 LINQ的動態查詢,基於存儲在一個字符串變量列名的NHibernate 3.0 Linq查詢。如何訂購根據提供的屬性名
// The value of this variable can be the name of any property of Document.
string columnName = "column1";
var query = from n in Session.Query<Document>()
where n.DocumentNumber == documentNumber
// how to order by the value of columnName?
select n;
的orderby
關鍵字確實接受字符串(或變量),但是當我執行以下命令:
var query = from n in Session.Query<Document>()
where n.DocumentNumber == documentNumber
orderby columnName
select n;
我得到這個異常:
無法執行查詢
select TOP (@p0)
accumulate0_.Id as Id9_,
accumulate0_.DocumentNumber as Documen10_9_
from dbo.Documents accumulate0_
where
[email protected]
order by @p2 desc
由ORDER BY識別號碼
選擇項目包含一個變量作爲表達識別的列位置的部分 。只有在引用列名的表達式對 進行排序時,才允許使用變量。
我知道有這規定,接受字符串
的
工作。但是,當使用NHibernate 3.0時會引發異常。.OrderBy
extention方法的重載的
LINQ Dynamic Query Library但這顯然只是在內存
我試圖讓生成的SQL查詢中的ORDER BY
語句具有指定的相應列名,所以我需要留在NHibernate領域。
使用NHibernate的標準,我可以動態訂單,但因爲我使用NHibernate LINQ中,我似乎沒有能夠訪問的標準功能。
所以我想我得到了錯誤的,那麼......但遺憾的是動態LINQ排序依據拋出異常(我不記得確切,這是前一陣子其中之一)使用NHibernate 3.0時,雖然在舊的沒有工作版本。 – 2011-01-21 08:52:57