你好,我是NHibernate的新手。我想使用連接到我的三個表中的一個SQL查詢到數據庫。NHibernate的CreateSqlQuery和對象圖
我有許多用戶與許多角色的應用程序。我試圖讓NHibernate正確地形成以Application對象開始的對象圖。例如,如果我有10個應用程序記錄,我需要10個應用程序對象,然後這些對象具有其用戶的角色。然而,我得到的結果類似於笛卡爾產品,其中我擁有與總用戶記錄一樣多的應用程序對象。
我已經仔細研究了這一點,不確定是否可以正確構建應用程序層次結構。我只能讓扁平的物體回來。看起來「也許」是可能的,因爲在我的研究中,我已經閱讀了關於「分組連接」和「分層輸出」的一個即將到來的LINQ to NHibernate版本。雖然我是一個新手。
[更新基於對Ayende的文章在這裏弗蘭斯評論我猜是我想做的事情是不可能的http://ayende.com/Blog/archive/2008/12/01/solving-the-select-n1-problem.aspx]提前
感謝您的時間。
Session.CreateSQLQuery(@"SELECT a.ID,
a.InternalName,
r.ID,
r.ApplicationID,
r.Name,
u.UserID,
u.RoleID
FROM dbo.[Application] a JOIN dbo.[Roles] r ON a.ID = r.ApplicationID
JOIN dbo.[UserRoleXRef] u ON u.RoleID = r.ID")
.AddEntity("app", typeof(RightsBasedSecurityApplication))
.AddJoin("role", "app.Roles")
.AddJoin("user", "role.RightsUsers")
.List<RightsBasedSecurityApplication>().AsQueryable();