我有一個非常簡單的問題,但找不到一個簡單的答案。單列結果NHibernate SQL查詢映射
我有NHibernate的執行原始SQL查詢,不幸被從數據庫中加載(是的,我們存儲SQL查詢的數據庫,沒有最好的設計,但我承擔)。這意味着基本上我不知道查詢將返回多少列。 我知道的是,如果查詢是單個列,那麼它是我需要的,如果它是多個列,那麼我需要第一個列,很簡單。
在我的代碼基本上有3種選擇:
session.CreateSQLQuery(SQLString).List();
session.CreateSQLQuery(SQLString).List<object>();
session.CreateSQLQuery(SQLString).List<object[]>();
問題是列表()將返回一個List<int>
(或合適的類型,但INT應該是在我的情況),如果該查詢返回單列,或者如果我有多個列,則爲List<object[]>()
。在這種情況下,List<object>
除外不會返回List<int>
。 當然,試圖總是強制轉換爲object [](第三選項)並獲取第一個元素不起作用,因爲nHibernate返回一個int並且不能轉換爲object []。
有沒有辦法強制NHibernate的始終,即使在一列的情況下返回一個對象[]?如果沒有,是否有一種簡單的方法來檢查結果中的列數,並據此採取行動?
謝謝!
可能NHibernate的DTO將滿足您的需要。列表除外
如果您不知道您的查詢將返回什麼內容,那麼您如何知道如何處理結果,或者您是否通過結果的形式決定? – 2012-01-04 14:10:38
我知道我需要一個int(ID基本上)的列表。如果查詢返回1列,這將是我所需要的,但如果它返回多個列,第一列將是我所需要的。然後我通過這個ID列表進行處理... 我不知道結果的類型,因爲查詢是由其他進程動態生成的(它基本上是一種動態過濾形式)。 – Tallmaris 2012-01-04 14:56:02