如果我想從類的屬性創建一個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