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 获取没有主键的子项 的相关文章

  • Nhibernate - 使用没有关系的连接表进行查询

    我想知道是否有人尝试在 NHibernate 中这样做 我有下表 简化版本 城市 城市 varchar2 PK 省份 varchar2 PK 城市 TL 城市 varchar2 PK 省份 varchar2 PK 郎 字符 2 PK 地点
  • 当使用 Ninject 管理会话的请求期间发生异常时,如何回滚 nHibernate 事务?

    我使用 nHibernate 进行 ORM 使用 Ninject 进行 IoC 我根据某个自定义范围 您可以假设是针对每个请求 创建 nHibernate 会话 我在激活时开始交易 我在停用时提交事务 问题是 如果在请求期间发生异常 我想回
  • ORM 是用于迁移数据的正确工具吗?

    背景 我们正在升级旧版导入工具 它的作用是将数据从连接到 SQL Server 的一个数据库移动到同一服务器上的第二个数据库 并使用不同的模式沿途执行转换和映射 这是一个帮助解释正在发生的事情的示例 假设源数据库有一张表名为Client I
  • 将 Hibernate linq 查询转换为 HQL

    我知道 IQueryable 无法序列化 这意味着查询无法序列化 发送到 Web 服务 反序列化 查询然后发回 我想知道是否可以将 hibernate linq 查询转换为 hql 以通过网络发送 我还缺少另一条路线吗 我想我已经看到 AD
  • 升级到 NHibernate 3.1 时 NHibernate 映射中断

    我最近刚刚升级到 FluentNHibernate 1 2 它使用 NHibernate 3 1 升级后 我的一些旧映射无法正常工作 我一直很难弄清楚为什么 我想也许这里有人可以提供帮助 我有 3 个课程 练习 练习和练习练习 一个练习可以
  • 发生异常后不刷新会话 - NHibernate

    我正在 NET 3 5 NHibernate 下开发一个 ASP NET MVC Web 应用程序 并托管在 Windows Azure 上 当 web 应用程序从本地开发结构运行时 它可以正常工作 然而 当我将其移动到 Windows A
  • Nhibernate:2 列总和的限制

    我可以使用 HNibernate Criteria 创建此 sql 查询吗 从表 1 中选择 其中列 1 gt 列 2 列 3 所有 3 列都是 int32 谢谢 好吧 在第 n 次阅读了这个问题的问题后 我决定编写一个不包括编写 SQL
  • 使用二级缓存时,nhibernate 查询缓存和实体缓存有什么区别?

    我正在尝试设置 nhibernate 二级缓存我在这篇文章中看到 http www gitshah com 2012 03 nhibernate and caching part 2 html我想了解查询缓存和实体缓存之间的区别 它说你需要
  • NHibernate 表更新事件

    我有这个表映射 我认为细节并不重要 WithTable COPACKER FACILITY Id x gt x FacilityNumber FACILITY NUM GeneratedBy Sequence FACSEQ Map x gt
  • NHibernate 应如何更新映射为版本的属性

    使用流畅的 NHibernate 我在使用映射的类上有一个属性Version Version x gt x Version 当我保存对象时 Version 属性会按照我的预期在数据库中递增 但对象上的属性值似乎只是有时会发生变化 using
  • 如何在 NHibernate 中自动生成 ID

    如何让 NHibernate 自动生成表的唯一 ID ID 可以是任意的long值 只要每个值仅使用一次 我当前的映射如下所示
  • 流畅的 NHibernate 和 XML 列

    我正在从头开始构建一个新站点 并正在考虑使用 Fluent NHibernate 作为我的 ORM 我认为它可以轻松处理所有事情 可能除了我的 XML 列 我从来没有使用 NHibernate 构建过网站 尽管我使用过 Hibernate
  • 如何保持长时间运行的NHibernate Session数据一致?

    我在 ASP NET 会话中缓存了 NHibernate 会话 我遇到过一种情况 用户编辑了一个对象 因此它位于 ISession 的第一级缓存中 然后另一个用户编辑了同一个对象 此时 用户 1 仍然可以看到其编辑的原始版本 而用户 2 可
  • nHibernate + wcf + Isession

    我有一个包含 3 个项目的 C 解决方案 数据 WCF 和 UI 第一个是与数据库对话的类库 它通过第二个项目公开 该项目的类型为 WCF 服务库 原因是它将在第三个项目 称为 UI 的 Asp net 应用程序 作为指向 dll 的简单
  • 自定义字符串查询操作的 Linq to NHibernate 可扩展性?

    我希望能够在 NHibernate Linq 表达式中使用自定义字符串查询 举例来说 这只是一个例子 我希望能够选择包含属性的实体 该属性是特定字符串的字谜 var myEntities EntityRepository AllEntiti
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • AutoMapper 将 IdPost 映射到 Post

    我正在尝试根据规则将 DTO 上的 int IdPost 映射到 Blog 对象上的 Post 对象 我想实现这一点 BlogDTO IdPost gt Blog Post 帖子将由 NHibernate 加载 Session Load I
  • 使用按位运算符时的 HQL 到 CriteriaQuery

    如何将其转换为 CriteraQuery select n from TagRegistration t join t Tag n where t Status status gt 0 order by count t ID desc n
  • 如何使用 NHibernate 标准来做到这一点

    假设我有 2 张桌子 表1 a b 和表2 c a 我需要做这样的事情 但符合 NHibernate 标准 select a b select count from table2 t2 where t1 a t2 a x from tabl
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助

随机推荐