2011-11-24 62 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

相关问题