NHibernate多对一的复合id实体

本文关键字:id 实体 复合 多对一 NHibernate | 更新日期: 2023-09-27 18:15:32

我如何映射一个多对一的关系,其中"一个"实体有一个复合id?例如:

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?

NHibernate多对一的复合id实体

Fluent允许您使用CompositeId()方法指定复合id映射。然而,正如我们在这个方法文档中读到的:

注意:尽可能使用代理键而不是组合键。

复合id通常需要大量的努力来讨论/没有收获。如果可以,我强烈建议使用代理键。这就容易多了。

然而,如果你被你的DB模式困住了,也许这些问题可以帮助你:

  • Fluent NHibernate和复合ID与单列名
  • Fluent NHibernate - Saving Entity with Composite Key
  • Fluent NHibernate复合ID表问题

如果你谷歌这些短语(流利的nhibernate复合id),你会很快发现很多链接也不知怎么地包含单词"problem"