NHibernate - 如何伪造多对多规范化的一面

时间:2010-09-10 17:49:41

标签: nhibernate nhibernate-mapping

我有以下两个表:

Package
id

ClientPackage
id
clientNumber
packageId

问题是我在这个数据库中没有Client表(它驻留在另一个数据库中)。有没有办法可以创建客户端映射到客户端模型,该模型只包含ClientPackage表中的不同“clientNumber”,同时将ClientPackage视为关联表 - 这意味着我不需要ClientPackage的类或映射。我想我可以用一个组件和一个idbag来完成这个,但我只是想要一个更有经验的意见,以便我知道我做的是正确的。

1 个答案:

答案 0 :(得分:1)

从NH的角度来看,这不是一个多对多的关系,正是因为没有映射客户端。

映射取决于您希望它在域模型中的表示方式。

idbag可以很好地将Package.Clients映射为ICollection<int>。您不需要组件:

<idbag name="Clients" table="ClientPackage">
  <collection-id column="id" type="...">
    <generator class="..."/>
  </collection-id>
  <key column="packageId"/>
  <element column="clientNumber"/>
</idbag>

然后你将使用这些ID来获取其他数据库中的客户端。