1

我在一个项目中使用 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 是空的,即没有设置属性设置器。当我删除 Future 关键字时,DTO 被正确填充......但这会导致在两个连接上对数据库进行两次调用。那么在 Nhibernate 中是否不能使用带有转换器的未来查询?

4

1 回答 1

1

JIRA (3222) 中有一个错误。Bryan Pedlar在 Stackoverflow 上提出这个问题后报告了这一点。

于 2013-06-06T09:11:46.653 回答