如果我想从类的属性创建DTO,所有这些都被映射,我可以不编写常规SQL语句吗?
我已经看过很多关于制作DTO课程以及使用它的文档,但是关于它是如何创建的并不多。我见过与Transformer一起使用的SQL查询,但这需要使用魔术字符串。
修改 的
感谢您的评论。我知道有多种方法可以检索DTO,但我一直无法找到不使用SQL / HQL的方法示例。是否有某个参考,或者这是NHibernate稀疏记录的区域之一?
答案 0 :(得分:5)
根据您最新的评论,这里有一些使用QueryOver
和Linq
使用QueryOver: -
var schoolList = Session.QueryOver<lmschool>()
.SelectList(i => i
.Select(p => p.Name).WithAlias(() => dto.Name)
.Select(p => p.Lat).WithAlias(() => dto.Lat)
.Select(p => p.Lng).WithAlias(() => dto.Lng)
)
.Where(w => w.Lat != null && w.Lng != null)
.TransformUsing(Transformers.AliasToBean<MarkerDto>())
.List<MarkerDto>();
使用NH Linq提供者: -
var schoolList = (from school in Session.Query<lmschool>()
.Where(w => w.Lat != null && w.Lng != null)
select new LmSchoolMarkerDto {
Name = school.Name,
Lat = school.Lat,
Lng = school.Lng,
}).ToList();
来自my blog 此外,如果您需要查看如何使用多个联接,请参阅此blog post。
还有很多S.O.可以帮助您的帖子,请参阅此search。
答案 1 :(得分:0)
您可以加载所有必需的实体并使用AutoMapper将它们更容易地映射到DTO吗?