2011-11-24 39 views
1

如何映射「一個」實體具有複合id的多對一關係? 例如:與綜合id實體NHibernate多對一

public class SingleEntity 
{ 
    public int FirstId{get;set;} 
    public int SecondId{get;set;} 
    public string SomeData{get;set;} 
} 

實體ManyEntity有(除的PrimaryKey)列都SingleEntity的FirstId和SecondId,所以我希望能夠梅普的關係,使ManyEntity看起來就像是:

public class ManyEntity 
{ 
public int Id{get;set;} 
public SingleEntity Single{get;set;} 
public string Name{get;set;} 
} 

我該如何使用NHibernate?

回答

0

Fluent允許您使用CompositeId()方法指定組合ID映射。但是,正如我們可以在這個非常方法的文檔中看到的那樣:

注意:儘可能在組合鍵上使用代理鍵。

複合ID通常需要大量的努力來討論/不收穫。 如果你可以,我會強烈主張使用代理鍵。這很容易。

但是,如果你堅持你的DB模式,或許這些問題可以幫助你:

如果谷歌的短語(流利nhibernate複合id),你會很快發現,很多很多鏈接不知何故也包含字「問題」 ...

+0

問題是由於與傳統軟件的向後兼容性,數據庫架構無法更改。 我知道SingleEntity可以使用composite-id進行映射,但是如何映射ManyEntity方面的連接? – sternr

相關問題