问题标签 [nhibernate-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3147 浏览

nhibernate - 使用 nHibernate 2.0 的 Session.Get 时遇到问题在具有复合 ID 的类上

我遇到了一些(我认为)应该很简单但找不到任何明确信息的问题。

在我有三个表的场景中,描述一个人可以拥有多个工作的域:

Person - 有 PersonId,名称
Job - 有 JobId,JobName
PersonJob - 有 PersonId,JobId,YearsOfEmployment

注意:在我的对象模型中,我有代表每个表的实体。我有第三个实体来表示人员/工作关系,因为那里有有用的元数据(YearsOfEmployment),而不仅仅是一个简单的连接表。

那么,如果我知道 PersonId 和 JobId,是否有一种简单的方法可以让我使用会话并返回与这些 Id 匹配的对象?

或者,换一种方式,因为我已经知道主键是否存在脑死,简单的方法我可以将 SQL“SELECT YearsOfEmployment FROM PersonJob WHERE PersonId=1 AND JobId=1”变成类似的东西:

var keys = new {PersonId=1, JobId=2};
PersonJob obj = Session.Get<PersonJob>(keys);

顺便说一句:地图看起来像这样:

0 投票
5 回答
3461 浏览

orm - 连接表中带有额外列的多对多映射

这是我希望拥有的域:

这是我拥有的架构:

这是一个人为的架构和域,但它与我正在使用的东西几乎相同。我目前通过编写第三个域实体来表示 CertificatesAcquiredByPeople 表,但这对我来说真的很奇怪。

我将如何使用 NHibernate 映射它?我相信 hbm 文件中的组件标签应该做我想要的,但我不太明白。

我的域是否因为我的证书类上有一个 DateAcquired 属性而出现问题?日期实际上只是拥有证书的人的关注点。

[编辑]

我现在更改了域模型以反映需要一个新实体。现在对于映射,我需要 3 个(对于每个实体)映射,还是可以使用 2 个(对于人员和证书)进行映射?

0 投票
1 回答
18398 浏览

nhibernate - nHibernate 2.0 - 映射复合 ID *和* 多对一关系会导致“无效索引”错误

我有个问题。想象一下这个数据模型:

由于[PersonTag]不仅仅是一个简单的多对多连接表,我在 nHibernate 中创建了所有三个实体(就像它们在数据模型中一样)。PersonTag,因此,需要一个复合ID,我已将其映射到这样的类:

我想遍历对象图并能够从检索到的对象中同时查看Person和对象。所以,我有对象的属性来做到这一点,映射如下:TagPersonTagPersonTag

当我尝试创建一个PersonTag对象并保存它时,我收到“Invalid index n for this SqlParameterCollection with Count=n”错误。我知道这是因为我已经映射了两次PersonIdandTagId属性,一次用于复合 ID,一次用于多对一关系。如果我不映射多对一对象,那么一切正常。

有没有办法让我能够基于在同一 nHibernate 实体中建模的同一列建立复合 ID 和多对一关系?

0 投票
2 回答
835 浏览

c# - 您如何映射也是 NHibernate hbm xml(或 fluent-nhibernate 类映射)中的主键的组件?

我试图弄清楚如何将组件映射为 nhibernate 中的主键,如果可能的话,也可以在流利的 nhibernate 中映射。

有问题的组件是一组独特的 3d 坐标,这是对象:

SpaceCoordinate 是一个结构体,定义如下:

在流利的 nhibernate 中使 SpaceCoordinate 成为一个组件,我将创建一个像这样的映射类:

但我想知道的是如何使 SpaceCoordinate 组件作为一个整体成为具有唯一约束的主键。我将如何在 Nhibernate xml 或流利的 nhibernate 类映射中映射它?

0 投票
2 回答
9524 浏览

fluent-nhibernate - 如何在流利的 nhibernate 中将枚举映射为字符串?

是否可以使用 Fluent Nhibernate 将枚举映射为字符串?

0 投票
1 回答
644 浏览

nhibernate - 如何使用 NHibernate 查询 SQL 2005 XML 字段?

我的 Microsoft SQL Server 2005 数据库包含一个具有 XML 字段的表,该字段具有一些重要的元数据,在普通 SQL 下,我可以运行以下查询并获取没有设置 UPC 代码的项目列表......不幸的是我我很难使用 NHibernate 的 Criteria API 重新创建此查询:

有什么建议么?

0 投票
1 回答
7719 浏览

asp.net - Fluent Nhibernate 在 3 个表上映射内部联接

数据结构为:

  • Table[Questionnaire] 顶部节点
  • Table[QuestionGroup] 只是标题等的分组
  • 表[QuestionnaireQuestion]映射[Question]<->[QuestionGroup]的多对多关系和[Questionnaire]<->[Question]的多对多关系
  • 表[问题]

出于报告目的,一个问题可以存在于许多问卷/问题组中。QuestionnaireQuestion 表还包含 Question 的一些属性,这些属性可能因调查问卷而异,例如是否需要?验证等。我想不通的是如何映射 Question.Required?。该属性是唯一的,过滤时对问卷调查问卷的问题表中的问卷_id 和问题_id

当我加载问卷时,我提供了一个问卷 ID,然后给我一个 QuestionGroups 列表,每个组都包含一个问题列表(尽管缺少验证属性)。

到目前为止,我的映射是:

0 投票
8 回答
19936 浏览

nhibernate - NHibernate:使用 Fluent Nhibernate 保存子对象

在我的系统中,我有两个实体 - ShoppingCart 和 ShoppingCartItem。相当通用的用例。但是,当我保存我的 ShoppingCart 时,没有任何项目被保存到数据库中。

在我的对象中,我创建了一个新的 ShoppingCart 对象。

然后,我将从数据库中获取的现有产品添加到开头。

这只是将项目添加到 IList 的简单包装器。

然后我在存储库上调用 SaveOrUpdate

看起来像这样:

我正在使用 Fluent NHibernate 进行映射:

数据库架构 (SQL Server 2005) 也相当通用:

当我保存或更新我的 ShoppingCart 时,为什么没有任何 ShoppingCartItems 也被保存?

请帮忙。

谢谢

更新:将其包装在交易中,为我提供了更多信息:

无法将值 NULL 插入到列“ShoppingCartId”、表“WroxPizza.dbo.ShoppingCartItems”中;列不允许空值。插入失败。该语句已终止。

这是因为它是一辆新推车。

0 投票
2 回答
2597 浏览

nhibernate - 使用外键将一对多集合映射到外键

我正在使用 nhibernate 映射旧数据库,并且在映射关系时遇到了一些问题。

这两个类看起来像这样

像这样的表

两个表之间的关系是 formcode 列。

我现在的映射是这样的

当我运行映射时,假设它试图将表单代码放入问题的 ID 中,我得到一个标识符类型不匹配。不幸的是,我无法更改表格的结构,我不知道如何映射它,任何帮助将不胜感激。

0 投票
7 回答
4090 浏览

nhibernate - Hibernate/NHibernate 映射文件编辑器

我正在寻找有帮助的编辑器

http://www.hibernate.org/hib_docs/nhibernate/html/mapping.html

内置,并允许以 GUI 方式简单编辑 XML 文件。我意识到有 CodeSmith 和 MyGeneration,但据我所知,这些只是一种方式,并且不允许编辑现有的 HBM 文件。