NHibernate Future Query with ResultSetTransformer



我试图用nhibernate查询任意sql数据,只要我不使用Futures功能,它就可以正常工作,但是,当我使用Futures时,数据不会传递到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)
        {
        }
}

在本例中,futures查询返回一个具有正确行数的空对象数组列表,当我对其进行调试时,object[]元组是空的,但是对于列表查询,它可以按预期工作。

您可能希望尝试以下操作:

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数据转换为您需要的数据,假设您知道目标格式

相关内容

  • 没有找到相关文章

最新更新