NHibernatians!
我有一张桌子dbo.Wibble和另一张桌子dbo.WibbleExtended。
Wi球是主表,WibbleExtended是存储其他字段的可选表。WibbleExtended表中的条目比主Wi球表少得多。我认为这样做是为了解决一些空间问题(Wi球有很多行,WibbleExtened有很多列)。
每个表的ID是相同的,来自外部源。
也就是说。
[dbo].[Wibble].[WibbleId]和
[dbo].[WibbleExtended].[WibbleId]是相同的,这是两个表之间的关系。
注:我不能改变模式。我要把它钉在一个我几乎无法控制的遗留系统上。
环顾四周,似乎一对一的映射是有问题的,流行的智慧是使用两个多对一的映射。
我的映射当前如下:
<class name="Wibble" table="Wibble" >
<id name="Id" column="WibbleId" type="Int32">
<generator class="assigned"/>
</id>
<many-to-one name="WibbleExtended" class="WibbleExtended" column="WibbleId" not-null="false" cascade="all"/>
</class>和
<class name="WibbleExtended" table="WibbleExtended" >
<id name="Id" column="WibbleId" type="Int32">
<generator class="assigned" />
</id>
<many-to-one name="Wibble" class="Wibble" column="WibbleId" not-null="true" />
</class>问题是我得到了一些错误,比如
System.IndexOutOfRangeException: Invalid index n for this SqlParameterCollection with Count=n.我环顾四周,这看起来确实是正确的策略,它只是落在了最后的障碍。
这个问题是身份发生器吗?地图的其他方面?
免费的肉馅饼,为正确的答案。
编辑:好的,以下是我通过@来解决这个问题的方法。
发布于 2008-12-23 14:25:27
您考虑过使用连接元件 2.0中引入的NHibernate吗?此元素允许您将多个表连接起来形成一个实体;这种关系也可以是可选的。
发布于 2009-04-24 09:30:19
您所得到的错误:
此SqlParameterCollection与Count=n的索引n无效。
由于,映射到同一列的两个属性。在其中一个中使用insert=false和update=false。
发布于 2008-12-23 14:47:28
查看以下链接:docs/nhibernate/html/heritance.html
尤其是“联接子类”映射,我认为您会发现这是有帮助的(假设WibbleExtended继承自Wi球)。
https://stackoverflow.com/questions/388914
复制相似问题