代码之家  ›  专栏  ›  技术社区  ›  Vlad

NHibernate-如何伪造多对多标准化的一面

  •  0
  • Vlad  · 技术社区  · 16 年前

    Package
    id
    
    ClientPackage
    id
    clientNumber
    packageId
    

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Diego Mijelshon    16 年前

    从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>