NHibernate - 执行SQL来填充DTO

Sam*_*l G 6 nhibernate fluent-nhibernate

我有一些实例报告执行sprocs比复杂的QueryOver语句更容易和简单.

我有一个DTO,而不是一个实体,它代表从查询返回的数据,并希望将查询结果填充到DTO中.我使用命名查询和session.GetNamedQuery()来执行查询.

  1. 我是否必须为DTO创建映射文件?
  2. 如果是这样,是否可以让NHibernate/FluentNHibernate知道它不应该为DTO创建表?我的单位测试使用NH的SchemaExport工具删除并创建模式,并且不想为DTO创建表格

请注意我不想使用Projections和AliasToBean投影QueryOver/Linq查询 - 我需要执行存储过程.

干杯

jbl*_*jbl 11

使用CreateSQLQuery,以下将在没有任何映射文件的情况下工作.也许您可以尝试使用命名查询:

public class YourDto
{
    public int YourDtoId { get; set; }
    public string YourDtoTitle { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后

var result = yourNhSession
    .CreateSQLQuery("select yourColumn1 as YourDtoId, yourColumn2 as YourDtoTitle from YOUR_TABLE")
    .SetResultTransformer(Transformers.AliasToBean<YourDto>())
    .List<YourDto>();
Run Code Online (Sandbox Code Playgroud)