2012-10-26 164 views
0

我有一个TABEL看起来像,多对一映射

tabel1

someID PK, 节点

tabel2

节点ID PK, 节点

,我正在努力让马柯在NHibernate的下面,而不是SQL

SELECT * 
FROM tabel1 
LEFT OUTER JOIN tabel2 
ON tabel1.node = tabel2.nodeid 

我曾尝试(这是多对一的关系,因为Tabel2可以有几个Tabel1关系)

Tabel1映射文件

 References(x => x.Tabel2) 
      .Column("nodeID") 
      .Not.LazyLoad(); 

Tabel2映射文件

 HasMany(x => x.Tabel1) 
      .KeyColumn("node") 
      .Not.LazyLoad(); 

我不明白为什么这不起作用!

回答

1

.Column("nodeID")必须是.Column("node"),因为它是在表1指向ID(默认)表2

+0

的这听起来很合理,但它仍然dosent工作列。这让我头痛:)“无效的列名'node_id'。\ r \ n无效的列名'Node_id'。”} –

+0

你确定它是你发布的HasMany映射吗?错误听起来更像是如果没有指定默认的KeyColumn产生 – Firo

+0

我结束upp与您的解决方案,现在它的工作,可能改变了别的东西.. 参考文献(x => x.Tabel2) .Column(“DossierNumber” ); 和 HasMany(x => x.Tabel1) .Not.LazyLoad(); –