如果我想从类的属性创建一个DTO,所有这些都被映射,我可以在不写常规SQL语句的情况下执行此操作吗?是否可以在NHibernate中智能地映射DTO?
我见过很多关于制作DTO类的文档,以及如何使用它,但没有太多关于它如何创建。我已经看到用于Transformer的SQL查询,但是需要使用魔术字符串。
编辑:
感谢您的意见。我知道有多种方法来检索DTO,但我一直无法找到不使用SQL/HQL的方法的示例。有没有参考的地方,或者是NHibernate那些稀少记录的领域之一?
如果我想从类的属性创建一个DTO,所有这些都被映射,我可以在不写常规SQL语句的情况下执行此操作吗?是否可以在NHibernate中智能地映射DTO?
我见过很多关于制作DTO类的文档,以及如何使用它,但没有太多关于它如何创建。我已经看到用于Transformer的SQL查询,但是需要使用魔术字符串。
编辑:
感谢您的意见。我知道有多种方法来检索DTO,但我一直无法找到不使用SQL/HQL的方法的示例。有没有参考的地方,或者是NHibernate那些稀少记录的领域之一?
从这里你最新的评论是用QueryOver
和Linq
使用QueryOver突出的DTO的一些例子: - 使用NH LINQ提供
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>();
: -
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。
谢谢你的回应。这些例子正是我所期待的。巧合的是,我曾看过您的博客文章,并一直在引用它。大多数我在SO上看到关于使用NHibernate的DTO的帖子都是一般性问题,假设每个人都已经知道如何检索它们。 – Origin 2012-02-17 15:56:07
'我见过用于Transformer的SQL查询,但需要使用魔术字符串 - 这不是真的,您可以将HQL,SQL,Criteria,QueryOver和NH Linq转换为DTO ...什么版本NH你正在使用,当你聪明地说你是什么意思? – Rippo 2012-02-16 10:42:32
“魔术串”并不意味着你认为它的意思 – 2012-02-16 14:01:40
谢谢@Rippo的建设性反馈。我的问题的关键是要澄清我的选择是什么。 Criteria/Queryover/Linq是否有任何参考?我似乎无法找到任何。 – Origin 2012-02-16 16:29:19