NHibernate 获取没有主键的子项

2024-04-27

我试图通过映射将对象集合放入父对象中。

我有一个主键是 guid (Id) 的父对象“ScoreCard”和一个主键是 guid (Id) 的子“Score”对象。我想根据两个对象都有的两个字段为父对象选择子对象,但我无法让它工作,这是映射

<bag name="ScoreCard">
  <key>
    <column name="HoleId"/>
    <column name="PlayerId"/>
  </key>
  <one-to-many class="Score" not-found="ignore"/>
</bag>

我没有设计数据库,但 ScoreCard 对象来自一个视图,该视图返回我需要的列以及邪恶的 guid。无论我尝试过什么,NHibernate 都会抛出关于外键与主键不同的异常。

在我看来,这是最简单的要求,根据一些标准获取一组东西,为什么我这么卡?

感谢您的帮助,对于错误的示例代码感到抱歉(在亲戚家下意识地观看高尔夫)。


好吧,我最终找到了。父对象是从提供三列且没有键的视图中绘制的。我可以将复合键映射到 HoleId 和 PlayerId,而不是我在查看代码时发现的邪恶 guid。这很棒,因为我可以轻松映射我需要的 Score 对象,然后使用 NHibernateUtil.Initialize 延迟加载它们。

我的映射 xml 需要如下所示

<class name="ParentObject">
    <composite-id>
      <key-property name="HoleId" column="HoleId" />
      <key-property name="PlayerId" column="PlayerId" />      
    </composite-id>
    <property name="EvilGuid" column="Id" />
    <bag name="ScoreCard">
      <key>
        <column name="HoleId"/>
       <column name="PlayerId"/>
      </key>  
      <one-to-many class="Score" not-found="ignore"/>
    </bag>
</class>

我的灵感来自于这个帖子 https://stackoverflow.com/questions/628677/nhibernate-query-with-join-table-without-relationship,也请关注Stefan的回答,因为我觉得我在这里很幸运,多考虑一下DDD,设计可以做得更好。

感谢您的帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate 获取没有主键的子项 的相关文章

随机推荐