NHibernate:在连接表上映射连接

我有一个视图将3个表连接在一起,我需要用NHibernate映射替换,而不需要对数据库进行任何更改。 这可能吗? 这是我的观点的简化示例:

SELECT tblTable1.*,tblTable2.*,tblTable3.MyProperty FROM tblTable1 OUTER JOIN tblTable2 ON tblTable1.Table1Key = tblTable2.Table1Key OUTER JOIN tblTable3 ON tblTable2.Table2Key = tblTable3.Table2Key 

基本上我们选择tblTable1并加入tblTable2这对我来说在NHibernate中起作用。 我的问题是tblTable3。 如何在联接表tblTable2的属性上加入它?

当我像这样进行映射时,由于某种原因,我得到一个试图在Table1Key上加入tblTable3的查询。

               

在NH,你不能加入加入。 唯一的方法是使它成为一个参考,它基本上做同样的事情

                 class MyClass { public virtual MyClass2 MyClass2 { get; set; } public virtual int MyClass2_MyProperty { get { return MyClass2.MyProperty; } set { MyClass2.MyProperty = value; } } } class MyClass2 { public virtual int MyProperty { get; set; } } 

编辑选项2:如果你不想要MyClass2也许你可以调整一下:

  <-- take table2 as the main table   <-- can be problem here, use sequence (directly) instead? table1_id_squence // not sure about "sequencename"             

没试试这个,但也许你可以在第二次加入时定义一个属性,在第三次加入时使用property-ref作为键列