NHibernate Future Query с ResultSetTransformer

Я пытаюсь запросить произвольные данные SQL с помощью nhibernate, он работает нормально, пока я не использую функцию 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[] пуст, однако с запросом списка он работает, как и ожидалось.

1 ответ

Решение

Вы можете попробовать что-то вроде этого:

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 в то, что вам нужно, при условии, что вы знаете формат назначения

Другие вопросы по тегам