Привет, я новичок в NHibernate. Я хотел бы сделать один запрос sql к базе данных, используя объединения к моим трем таблицам.NHibernate CreateSqlQuery и граф объектов
У меня есть приложение со многими ролями со многими пользователями. Я пытаюсь заставить NHibernate правильно сформировать граф объектов, начиная с объекта Application. Например, если у меня есть 10 записей приложений, я хочу 10 объектов приложения, а затем эти объекты имеют свои роли, которые имеют своих пользователей. Однако то, что я получаю, похоже на декартово произведение, в котором у меня столько объектов приложения, сколько полных записей пользователя.
Я изучил это довольно немного и не уверен, правильно ли сформировать иерархию приложений. Я могу получить только сплющенные объекты. Это кажется «возможно» возможным, как в моих исследованиях, которые я прочитал о «сгруппированных соединениях» и «иерархическом выходе» с предстоящим выпуском LINQ to NHibernate. Опять же, хотя я новичок.
[Обновление на основе Frans комментарий в посте 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();