nhibernate - NHibernate 获取没有主键的子项

标签 nhibernate nhibernate-mapping nhibernate-collections

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

我有一个主键是 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 对象来自一个 View ,该 View 返回我需要的列以及邪恶的 guid。无论我尝试过什么,NHibernate 都会抛出关于外键与主键不同的异常。

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

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

最佳答案

好吧,我终于找到了。父对象是从提供三列且没有键的 View 中绘制的。我可以将复合键映射到 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>

我的灵感来自this post ,也请关注Stefan的回答,因为我觉得我在这里很幸运,多考虑一下DDD,设计可以做得更好。

感谢您的帮助。

关于nhibernate - NHibernate 获取没有主键的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/773443/

相关文章:

c# - 你如何让 NHibernate 忽略 POCO 中的属性

c# - 多列多对一

NHibernate 自定义集合类型

wpf - Fluent-Nibernate 以 wpf : Convention to use uNhAddIns. ..ObservableListType<T> 作为默认值?

c# - 重新排序列表中项目的正确方法(nhibernate)

nhibernate - 不会导致 "collection was not processed by flush"错误的NHibernate审核跟踪

nhibernate - 使用 NHibernate 将属性映射到另一个表

nhibernate L2缓存: configure by code

entity-framework - 为什么 Entity Framework 需要生成本地查询 View ?休眠怎么样?