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

nHibernate,我可以映射到一个没有每对象一行映射的表吗?

  •  1
  • Mendelt  · 技术社区  · 16 年前

    我有一个数据库,其中包含一个看起来有点像这样的表:

    PropertyId、EntityId、值

    PropertyId和EntityId是组合主键。每个实体分布在几行上,其中每行包含实体的单个属性。我无法控制这个数据库,所以我必须使用它。

    是否可以使用NHibernate将此表中的实体映射到单个对象?我只需要从这张桌子上读一读,这可能会让事情变得容易一点。或者我最好还是使用DataReader并自己进行映射?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Chris Kimpton    16 年前

    还没有完全做到这一点,但是您可以使用自定义SQL查询来定义您的实体(独特的entityid,加上任何实体级别的属性),请参阅 here

    虽然我可以看到您可能希望属性/值映射到实体对象的属性。这可能意味着进一步的查询需要手工填充,这可能意味着您的数据读取器路线是最好的。

    如果您希望它们成为实体的集合,那么这应该没有问题。

        2
  •  1
  •   kÍ©eÍ£mÍ®pÍ¥ Í©    16 年前

    map 我会这样做:

    <map name='Values' table='EntityPropertyValue'>
      <key column='EntityId'  />
      <index-many-to-many class='Person' column='PersonId' />
      <element column='Value' type='object' />
    </map>