5

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)
        {

        }
}

この例では、先物クエリは正しい行数を持つ空のオブジェクト配列のリストを返します。デバッグすると、オブジェクト [] タプルは空ですが、リスト クエリでは期待どおりに動作します。

4

1 に答える 1

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 データが必要なものに変換されます。

于 2012-09-26T21:08:44.887 に答える