2012-07-16 46 views
4

我試圖查詢任意SQL數據與NHibernate,它工作正常,只要我不使用期貨功能,但是,當我使用期貨時,數據不會傳遞到ResultSetTransformer。NHibernate未來的查詢與ResultSetTransformer

例如代碼:

public class TestResultSetTransformer : IResultTransformer 
{ 
    public object TransformTuple(object[] tuple, string[] aliases) 
    { 
     return tuple; 
    } 

    public IList TransformList(IList collection) 
    { 
     return collection; 
    } 
} 
public void Foo(ISession sess){ 
     var x = sess.CreateSQLQuery("select * from MailEvent").SetResultTransformer(new TestResultSetTransformer()).Future<object[]>(); 
     var xprime = sess.CreateSQLQuery("select * from MailEvent").SetResultTransformer(new TestResultSetTransformer()).List<object[]>(); 
     foreach(var y in x) 
     { 

     } 
} 
在該示例

,期貨查詢返回具有正確的行計數,當調試到它的空對象陣列的列表,對象[]元組是空的,但是與列表查詢,它按預期工作。

+0

我有相同的問題。 – 2012-08-17 13:34:42

回答

0

您不妨試試這樣的:

public class MailEvent 
{ 
    public virtual int Id{get;set;} 
    public virtual string Message{get;set;} 
} 

public IEnumerable<MailEvent> GetMailEvents(ISession session) 
{ 
    return session.CreateSQLQuery("select Id, Message from MailEvent") 
        .SetResultTransformer(Transformers.AliasToBean<MailEvent>()) 
        .Future<MailEvent>();   
} 

這應該任意SQL數據轉換成你所需要的,假設你知道目標格式

+0

我沒有做兩個查詢(甚至編譯我剛剛寫的代碼),但模式是健全的。 – 2012-09-26 21:10:21

+1

事實證明,這不適合我,因爲在NHibernate中有一個錯誤。我已經在他們的JIRA上報道過了,希望他們正在努力。具體而言,ResultTransformers似乎不與期貨查詢結合使用。 – 2013-01-29 15:56:57

+0

這裏是你的JIRA問題的鏈接。 https://nhibernate.jira.com/browse/NH-3222 – 2013-06-06 09:13:38