我正在尝试使用Projections从Lead类创建DTO。例如,我的DTO有家庭电话号码,手机号码和电子邮件地址,但Lead Class有一系列联系方式。所以我试图找到一种方法来检索每个联系人细节,以便我可以在dto上设置属性。我尝试过使用子查询和预测,但无济于事。
我试图生成的SQL是这样的:
SELECT
A.LeadId,
B.ContactId,
B.Value,
C.ContactId,
C.Value,
D.ContactId
FROM Lead A
LEFT JOIN ContactDetail B ON A.LeadId=B.LeadId AND B.ContactType='Home Number'
LEFT JOIN ContactDetail C ON A.LeadId=C.LeadId AND C.ContactType='Mobile Number'
LEFT JOIN ContactDetail D ON A.LeadId=D.LeadId AND D.ContactType='Email Address'
所以简而言之,我试图根据不同的标准连接到同一个表3次,我知道在NHibernate中我不能使用CreateAlias不止一次加入同一个表,我很想知道是否可以使用Criteria API或NHIbernate Linq。提前感谢您的帮助。
答案 0 :(得分:0)
我会从nHibernate加载“常规”主要实例及其联系人详细信息集合。然后我会使用AutoMapper将它映射到DTO类。
在我看来,这是一种更清晰的方法,因为您不为“简单”DTO映射创建特殊的数据访问方法。而且重构更容易,因为所有内容都通过“急剧代码”来表达。
链接到AutoMapper