预期加入的路径!Nhibernate错误

预期加入的路径!Nhibernate错误,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正在尝试加入,但不断出现此错误 预期加入的路径![选择 t、 来自任务的CourseId作为t内部联接 课程为c,课程许可为cp 其中(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(quer

我正在尝试加入,但不断出现此错误

预期加入的路径![选择 t、 来自任务的CourseId作为t内部联接 课程为c,课程许可为cp 其中(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);
我正在努力实现的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)

我使用的是nhibernate 3.1和fluent nhibernate 1.2,这意味着在HQL中使用内部联接与在SQL中使用有点不同。在HQL中,通过提供“路径”来连接表,路径基本上是类的引用属性

所以不是

SELECT t.CourseId FROM Task as t INNER JOIN Courses as c ...
你需要写作

// c.Taks is the IList property in your Courses class
SELECT t.CourseId FROM Courses as c INNER JOIN c.Tasks as t ...

虽然Florian Lim提出了一个很好的解决方案,但就我而言,我没有IList来完成课程中的任务。我做到了这一点,通过它实际上是提供了所有可能的组合,这些组合可以根据需要进行筛选(在where子句中)。

如果任务表上没有外键,这是否有效?