我有一个数据库,其中包含一个看起来有点像这样的表:
属性 ID、实体 ID、值
PropertyId 和 EntityId 是组合的主键。每个实体都分布在几行中,其中每一行都包含实体的一个属性。我无法控制这个数据库,所以我必须使用它。
是否可以使用 NHibernate 将此表中的实体映射到单个对象?我只需要从这张表中阅读,这可能会让事情变得更容易一些。还是我最好只使用 DataReaders 并自己进行映射?
我有一个数据库,其中包含一个看起来有点像这样的表:
属性 ID、实体 ID、值
PropertyId 和 EntityId 是组合的主键。每个实体都分布在几行中,其中每一行都包含实体的一个属性。我无法控制这个数据库,所以我必须使用它。
是否可以使用 NHibernate 将此表中的实体映射到单个对象?我只需要从这张表中阅读,这可能会让事情变得更容易一些。还是我最好只使用 DataReaders 并自己进行映射?
还没有完全做到这一点,但您可以使用自定义 SQL 查询来定义您的实体(不同的 entityid,以及任何实体级别的属性),请参见此处。
尽管我可以看到您可能希望将属性/值映射到实体对象的属性。这可能意味着需要进一步查询以手动填充它们——这可能意味着您的数据读取器路线是最好的。
如果您对它们成为实体的集合感到高兴,那应该没问题。
我不记得确切的语法,但 amap
会这样做:
<map name='Values' table='EntityPropertyValue'>
<key column='EntityId' />
<index-many-to-many class='Person' column='PersonId' />
<element column='Value' type='object' />
</map>