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