你好,我是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();