我有一个包含一个表,看起来有点像这样的数据库:NHibernate的,我可以映射到不具有行每对象映射表?
属性ID,ENTITYID,价值
属性ID和ENTITYID是联合主键。每个实体分布在几排的,每一个行包含实体的一个属性。我无法控制这个数据库,所以我不得不使用它。
是否有可能使用NHibernate的,从这个表中的单个对象映射实体?我只需要从这张表中读取,这可能会让事情变得更容易一些。或者,我会过得更好只是用的DataReader,做映射自己?
我有一个包含一个表,看起来有点像这样的数据库:NHibernate的,我可以映射到不具有行每对象映射表?
属性ID,ENTITYID,价值
属性ID和ENTITYID是联合主键。每个实体分布在几排的,每一个行包含实体的一个属性。我无法控制这个数据库,所以我不得不使用它。
是否有可能使用NHibernate的,从这个表中的单个对象映射实体?我只需要从这张表中读取,这可能会让事情变得更容易一些。或者,我会过得更好只是用的DataReader,做映射自己?
不完全是这样,但您可以使用自定义SQL查询来定义实体(不同的entityid,以及任何实体级别的属性),请参见here。
虽然我可以看到你可能想映射到实体对象的属性属性/值。这可能意味着进一步查询手工填充它们 - 这可能意味着你的数据读取器的路线是最好的。
如果你对他们的快乐是一个实体的集合,那应该没问题。
我不记得确切的语法,但map
会做到这一点:
<map name='Values' table='EntityPropertyValue'>
<key column='EntityId' />
<index-many-to-many class='Person' column='PersonId' />
<element column='Value' type='object' />
</map>
感谢。我会尝试一下。我可以将这些属性存储在列表中,并通过查找列表中正确属性的单个属性获取器将它们提供给外部世界。不理想但可行:-) – Mendelt 2008-10-16 10:10:55