我有一些实例用于报告执行的sprocs比复杂的QueryOver语句更容易和简单。
我有一个DTO,而不是一个实体,它代表从查询返回的数据,并希望将查询结果填充到DTO中。我正在使用命名查询和session.GetNamedQuery()来执行查询。
请注意我不想使用Projections和AliasToBean投影QueryOver / Linq查询 - 我需要执行存储过程。
干杯
答案 0 :(得分:11)
使用CreateSQLQuery,以下内容可以在没有任何映射文件的情况下工作。也许您可以尝试使用命名查询:
public class YourDto
{
public int YourDtoId { get; set; }
public string YourDtoTitle { get; set; }
}
然后
var result = yourNhSession
.CreateSQLQuery("select yourColumn1 as YourDtoId, yourColumn2 as YourDtoTitle from YOUR_TABLE")
.SetResultTransformer(Transformers.AliasToBean<YourDto>())
.List<YourDto>();
答案 1 :(得分:2)
如果您想要最简单的解决方案,我建议您在架构中添加一个像Dapper这样的微/ orm来执行此操作。它只是在您的项目中删除single file并按照示例进行操作。为了对我来说,当你必须做出因某种原因出于实体逻辑的事情时,它是与NH配对的最佳解决方案。