加入的路径预计!Nhibernate错误

cho*_*bo2 9 nhibernate fluent-nhibernate

我试图加入,我不断收到此错误

加入的路径![SELECT t.CourseId FROM Task as INNER JOIN Courses as c,CoursePermissions as cp WHERE(t.CourseId = 1)]

我有

const string query = "SELECT t.CourseId FROM  Task as t INNER JOIN Courses as c, CoursePermissions as cp WHERE (t.CourseId = 1)";

var a = session.CreateQuery(query);
Run Code Online (Sandbox Code Playgroud)

我试图实现我的Sql

SELECT     dbo.Tasks.CourseId
FROM         dbo.Tasks INNER JOIN
                      dbo.Courses ON dbo.Tasks.CourseId = dbo.Courses.CourseId INNER JOIN
                      dbo.CoursePermissions ON dbo.Courses.CourseId = dbo.CoursePermissions.CourseId
WHERE     (dbo.Tasks.CourseId = 1)
Run Code Online (Sandbox Code Playgroud)

我正在使用nhibernate 3.1和流畅的nhibernate 1.2

Flo*_*Lim 16

这意味着在HQL中使用内部联接与在SQL中使用它有点不同.在HQL中,您通过提供"路径"来加入表,该路径基本上是您的类的引用属性.

而不是

SELECT t.CourseId FROM Task as t INNER JOIN Courses as c ...
Run Code Online (Sandbox Code Playgroud)

你需要写

// c.Taks is the IList property in your Courses class
SELECT t.CourseId FROM Courses as c INNER JOIN c.Tasks as t ...
Run Code Online (Sandbox Code Playgroud)