我有一个包含类似以下表格的数据库:
属性标识(PropertyId),实体标识(EntityId),值(Value)
PropertyId和EntityId是一个组合主键。每个实体都分布在几行中,每行包含实体的一个属性。我无法控制这个数据库,所以我必须与它一起工作。
可以使用NHibernate将实体从这个表映射到单个对象吗?我只需要从这个表中读取,这可能会使事情变得更容易。或者我最好只使用DataReaders并自己执行映射呢?
我有一个包含类似以下表格的数据库:
属性标识(PropertyId),实体标识(EntityId),值(Value)
PropertyId和EntityId是一个组合主键。每个实体都分布在几行中,每行包含实体的一个属性。我无法控制这个数据库,所以我必须与它一起工作。
可以使用NHibernate将实体从这个表映射到单个对象吗?我只需要从这个表中读取,这可能会使事情变得更容易。或者我最好只使用DataReaders并自己执行映射呢?
还没有完成,但您可以使用自定义的SQL查询来定义实体(不同的实体ID以及任何实体级别的属性),请参见这里。
尽管我能理解你可能想要将属性映射到实体对象的属性/值中。这可能意味着需要通过手动进行进一步查询来填充它们,这可能意味着您的数据读取器路线是最好的。
如果你愿意让它们成为一个实体的集合,那应该没有问题。
我记不清确切的语法,但是一个map
可以做到:
<map name= Values table= EntityPropertyValue >
<key column= EntityId />
<index-many-to-many class= Person column= PersonId />
<element column= Value type= object />
</map>