代码之家  ›  专栏  ›  技术社区  ›  Mark Dickinson

获取不带主键的子项NHibernate

  •  2
  • Mark Dickinson  · 技术社区  · 16 年前

    我试图通过映射将对象集合转换为父对象。

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

    在我看来,这似乎是最简单的要求,得到一个集合的东西给出了一些标准,为什么我这么坚持?

    谢谢你的帮助,很抱歉错误的示例代码(在亲戚家观看潜意识高尔夫)。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Community CDub    8 年前

    嗯,我终于找到了。父对象是从提供三列且没有键的视图中绘制的。我可以将复合键映射到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可以使设计变得更好。

        2
  •  1
  •   Daniel Schilling Aaron Palmer    11 年前

    问题是:NHibernate最适合(但不仅限于)DDD,这意味着首先要创建域类,并使数据库最适合域模型。

    我认为两者的结合不起作用。请参阅NHibernates问题跟踪程序上的此问题: https://nhibernate.jira.com/browse/NH-1722 . 你可以投票支持那里的功能。

    推荐文章