NHibernate与复合id实体多对一

时间:2011-11-24 11:07:15

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

如何映射“one”实体具有复合ID的多对一关系? 例如:

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

实体ManyEntitySingleEntity的FirstId和SecondId都有(除了primaryKey之外)列,所以我希望能够对这种关系进行处理,以便ManyEntity能够看起来像那样:

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

我怎样才能使用NHibernate?

1 个答案:

答案 0 :(得分:0)

Fluent允许您使用CompositeId()方法指定复合ID映射。但是,我们可以在这个方法文档中读到:

  

注意:尽可能在复合键上使用代理键。

复合ID通常需要付出很多努力才能讨论/无法获得收益。 如果可以,我强烈建议使用代理键。这更容易。

然而,如果您坚持使用数据库架构,那么这些问题可能会对您有所帮助:

如果你谷歌那些短语(流利的nhibernate复合id),你会很快发现很多链接也包含“问题” ......