NHibernate 3的未来查询是否与AliasToBeanResultTransformer兼容

时间:2013-06-06 09:00:30

标签: nhibernate

我在项目中使用NHibernate 3,并且需要调用两个存储过程并以DTO结构返回结果。出于性能原因,我使用了Future查询,例如

            var contractstaffroles = GetSession()
                .CreateSQLQuery(string.Format("exec up_List_ContractStaffRole_By_Staff @staffId = :staffId"))
                .SetParameter("staffId", staffId)
                .SetResultTransformer(new AliasToBeanResultTransformer(typeof(ContractStaffRoleReadOnlyData)))
                .Future<ContractStaffRoleReadOnlyData>().ToList();

            var contractstaffroleperiods = GetSession()
                .CreateSQLQuery(string.Format("exec up_List_ContractStaffRolePeriods_By_Staff @staffId = :staffId"))
                .SetParameter("staffId", staffId)
                .SetResultTransformer(new AliasToBeanResultTransformer(typeof (ContractStaffRolePeriodReadOnlyData)))
                .Future<ContractStaffRolePeriodReadOnlyData>().ToList();

var cnt = contractstaffroles.Count();

第一个查询正确地从存储过程返回记录。但是,生成的DTO是空的,即没有设置属性设置器。当我删除未来关键字时,DTO正确填充...但这导致在两个连接上对数据库进行两次调用。因此,在Nhibernate中使用变换器的未来查询是不可能的?

1 个答案:

答案 0 :(得分:1)

有一个bug in JIRA (3222)。在{2}上询问Stackoverflow上的Bryan Pedlar后,this question报告了这一点。