2012-03-13 45 views
2

我有如下的複合鍵的映射關係:流利NHibernate的複合鍵不產生加盟對於引用的實體

CompositeId() 
      .KeyReference(x => x.CreatedBy, "member_key") 
      .KeyReference(x => x.Box, "box_key"); 

這工作正常進行簡單的獲取和插入,但它是不產生與中提到的表的連接在我嘗試使用它們作爲查詢的一部分的參考中。

所以這個:

return _sessionFactory.GetCurrentSession().QueryOver<BoxMember>() 
      .Where(x => x.Box.Id == boxId) 
      .Where(x => x.Member.DeletedDate == null) 
      .Fetch(x => x.Box).Eager 
      .Fetch(x => x.CreatedBy).Eager 
      .List(); 

生成以下SQL:

SELECT this_.member_key  as member1_5_0_, 
     this_.box_key  as box2_5_0_ 
FROM box_member this_ 
WHERE this_.box_key = '2750e160-ba72-4a70-b554-9fd600e3cfd0' /* @p0 */ 
and m1_.deleted_date is null; 
+0

不會當你離開了它的過濾器上,加入? '.Where(x => x.Box.Id == boxId)' – Firo 2012-03-13 17:03:38

+0

你設法修復它嗎? – Ha11owed 2013-09-16 17:58:15

+0

你需要在下面標記答案是正確的。 – BradLaney 2014-01-30 03:05:48

回答

3

我有完全一樣的問題。添加引用映射幫助,但問題是沒有意義的反正:

試試這個:

CompositeId() 
      .KeyReference(x => x.CreatedBy, "member_key") 
      .KeyReference(x => x.Box, "box_key"); 
Reference(x => x.CreatedBy); 
Reference(x => x.Box); 
+0

呃嚇到了這個。這解決了我的問題。爲什麼地獄沒有自動鍵入引用做到這一點? – BradLaney 2014-01-30 03:05:32