首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate映射-一对一(或一对零)

NHibernate映射-一对一(或一对零)
EN

Stack Overflow用户
提问于 2008-12-23 13:57:05
回答 3查看 11.6K关注 0票数 7

NHibernatians!

我有一张桌子dbo.Wibble和另一张桌子dbo.WibbleExtended。

Wi球是主表,WibbleExtended是存储其他字段的可选表。WibbleExtended表中的条目比主Wi球表少得多。我认为这样做是为了解决一些空间问题(Wi球有很多行,WibbleExtened有很多列)。

每个表的ID是相同的,来自外部源。

也就是说。

代码语言:javascript
复制
[dbo].[Wibble].[WibbleId]

代码语言:javascript
复制
[dbo].[WibbleExtended].[WibbleId]

是相同的,这是两个表之间的关系。

注:我不能改变模式。我要把它钉在一个我几乎无法控制的遗留系统上。

环顾四周,似乎一对一的映射是有问题的,流行的智慧是使用两个多对一的映射。

我的映射当前如下:

代码语言:javascript
复制
<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>

代码语言:javascript
复制
<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>

问题是我得到了一些错误,比如

代码语言:javascript
复制
System.IndexOutOfRangeException: Invalid index n for this SqlParameterCollection with Count=n.

我环顾四周,这看起来确实是正确的策略,它只是落在了最后的障碍。

这个问题是身份发生器吗?地图的其他方面?

免费的肉馅饼,为正确的答案。

编辑:好的,以下是我通过@来解决这个问题的方法。

  1. 将单元测试从WibbleExtended测试移到Wibble类,并进行必要的修改。
  2. 将以下内容添加到Wibble.hbm.xml中
  3. 将相应的属性添加到Wibble中。
  4. 删除了所有与WibbleExtended相关的代码。
  5. 运行测试,全部通过,签入。建筑通过了。去喝了一杯圣诞啤酒(因此,在我更新它之前已经有几天了!:-)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-23 14:25:27

您考虑过使用连接元件 2.0中引入的NHibernate吗?此元素允许您将多个表连接起来形成一个实体;这种关系也可以是可选的。

票数 8
EN

Stack Overflow用户

发布于 2009-04-24 09:30:19

您所得到的错误:

此SqlParameterCollection与Count=n的索引n无效。

由于,映射到同一列的两个属性。在其中一个中使用insert=false和update=false。

参考线程/线程/84830b1257efd 219

票数 11
EN

Stack Overflow用户

发布于 2008-12-23 14:47:28

查看以下链接:docs/nhibernate/html/heritance.html

尤其是“联接子类”映射,我认为您会发现这是有帮助的(假设WibbleExtended继承自Wi球)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/388914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档