问题标签 [fluent-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 投票
1 回答
100 浏览

nhibernate - 将一个类映射到具有类型/项目的多个类

我的问题是我有父类,并且对于每个父类,我都有 B 类列表。例如,这些表格是:

图片

电脑

工作人员

我们为每台计算机和工作人员提供了许多图像。在计算机和工人类别中,我们有图像列表。对于计算机,图像项目是:

对于工人来说,图像项目是:

这些类应该是: 计算机:-id -age -owner -images 工人:-id -age -name -images

关于图像,我不确定我需要什么,但类似:-id -filename(可选,如果映射需要)-type -item

一些想法如何映射?

0 投票
3 回答
958 浏览

nhibernate - NHibernate - 将两个相同类型的集合映射到数据库

NHibernate 映射问题。我有一个名为 User 的实体和一个名为 Menu 的实体。用户包含两个菜单集合。

无论如何我可以在不创建新实体的情况下为 User 和 Menu 生成两个关系表(可能是 UserHistory 和 UserFavourites ...),每个关系表都包含从 UserIds 到 MenuIds 的映射?是否可以仅使用映射来完成(如果可能,FluentNHibernate 映射)?还是有更好的方法来做我在这里想做的事情?

谢谢你。

0 投票
1 回答
880 浏览

asp.net-mvc - Fluent NHibernate 加入多个字段问题

我目前正在研究如何将现有 .NET 4.0 MVC 3 Web 应用程序的数据访问层移植到实体框架。有很多原因,但主要原因是由于成千上万的存储过程,仅向表中添加 1 个字段会导致 30 - 50 sproc 编辑!

我们正在使用 MS SQL Server 2008 R2,理想情况下,我们希望使用 NHibernate 和 Fluent 进行映射。

我已将我遇到的问题简化为一个简单的示例:

想象一下以下 2 个表:

“产品”表

“产品名称”表

Products 表将包含一个产品列表,每个产品都有一个默认的英文名称。产品名称表将包含产品的 ID 和许多翻译。

目前,使用存储过程,我们有以下内容:

注意:@Culture 被传递到过程中

这始终确保返回具有本地化名称或默认(英文)名称的单个产品。

我的问题是:这是否可以在 Fluent NHibernate 的映射级别执行?我一直在搜索“如何加入 2 列”,但找不到有效的解决方案。如果在如此成熟的框架中不可能做到这一点,这似乎很奇怪?

作为我一直在尝试的一个例子:

但是,这会导致以下异常:

这是因为产品 109 有 5 个翻译,因此所有 5 个翻译都不能映射到单个字符串。

我设法使用“HasMany<>”方法将所有翻译映射到产品中的列表中。然而,这不是我需要的。

0 投票
2 回答
388 浏览

nhibernate - 一次覆盖多种类型的 FluentNHibernate DefaultCascade

我有一个这样定义的抽象实体基类:

另外,我正在使用自动映射:

SessionItem有几个派生类/表,我想覆盖所有的级联策略。我尝试了以下方法:

但不幸的是,没有调用覆盖,因为SessionItem它是抽象的(并且没有映射)。我更愿意避免为每个子类覆盖它(使用 IAutoMappingOverride)。

有什么方法可以覆盖多种类型的级联,而无需为每种类型使用 IAutoMappingOverride<>?

0 投票
1 回答
524 浏览

nhibernate - 映射实现相同接口的多个类

我有一个实现以下接口的类:

实现此接口(用户)的默认类和接口是在核心库中定义的,理想情况下我不希望修改它。但是我需要为我的用户添加一个额外的属性,因此我添加了一个自定义类,它也实现了 IUser 接口。我已将其映射为与映射 User 类相同但具有附加字段的映射。但是,如果我尝试说:

它抛出错误:

Security.IUser 的模糊持久性由多个层次结构实现:Web.Security.Models.User Security.Models.User

我可以理解为什么我会得到这个,因为 NHibernate 无法判断我首选使用哪种类型。我想知道是否可以在映射中提示 NHibernate 这个?

我会很感激帮助。谢谢

0 投票
1 回答
348 浏览

nhibernate - NHibernate - 实现相同接口的多种类型

我的应用程序定义了以下类型

User 类被流畅地映射,如:

我想创建另一个 IUser 实现,但我有几个限制:

  1. 新字段必须添加到与用户表相同的表中
  2. 扩展类型的代码存在于单独的项目中

例如,这是我的新课程:

映射如下:

我遇到的第一个问题是它不喜欢同一个接口被映射两次。我通过在 Application_Start 事件中添加一些代码来克服这个问题,以便仅在不存在 CustomUserMap 类的情况下添加 UserMap 类。

但是我很快遇到了下一个问题,如果我在另一种类型中添加对 IUser 接口的引用,则会引发错误:

来自表 Blogs 的关联引用了一个未映射的类:IUser

我可能会做完全错误的事情,如果有人能告诉我我做错了什么,我将不胜感激。谢谢

0 投票
1 回答
1536 浏览

c# - Fluent NHibernate - 使用 2 列映射一对多

我有一个数据库架构:

产品

  • ID
  • 产品名称
  • 描述
  • 店铺品牌

产品变化

  • 变体 ID
  • 产品编号
  • 尺寸
  • 店铺品牌
  • 价格

可以预见,类看起来有点像这样:

我有这样的映射类:

这是一种工作...

但是,我需要做的是将 Product.Brands 与 ProductVariation.Brands 联系在一起......(反之亦然)

因此查询产品,返回该品牌的 ProductVariations 列表...(注意,ProductVariation 在类中没有属性,但它具有用于映射的列)

ProductVariation.ID 不是唯一的。关键是 ProductVariation.ID 和 ProductVariation.Brand(在数据库上)

0 投票
0 回答
145 浏览

fluent-nhibernate-mapping - 从 subclassMap 中引用组件

我正在尝试从子类映射中引用组件,但出现以下异常

“访问者尝试使用未解析的组件引用‘重量’,从‘RecipeFermentable’的属性‘重量’引用,无法继续。”

当我使用普通的 ClassMap 但在重构为 SubclassMap 后停止工作时,这项工作。

0 投票
1 回答
554 浏览

.net - 使用 Fluent NHibernate 将每个层次结构映射到现有数据库的表,而不使用鉴别​​器列

我使用 Fluent NHibernate (1.2.0.712) 将每个层次结构表映射到现有数据库时遇到问题。这是简化的情况。

我的班级结构:

类图

数据库结构:

数据库图

所以基本上,我们有 1 个表(实体),其中包含一些特定数据(ID 和名称)+ 几个外键(到 ReferencedObject1 或 ReferencedObject2)。

抽象类 AbstractEntity 包含 Id 和 Name。ConcreteEntity1 和 ConcreteEntity2 是派生类。

我想根据数据库中的引用映射这些派生实例,所以如果有对 ReferencedObject1 的引用-> 它是 ConcreteEntity1 的一个实例。如果有对 ReferencedObject2 的引用 -> 它是 ConcreteEntity2 的一个实例。

一些代码:

所以实际上我的问题是我应该如何映射派生类?我浏览了流利的 nhibernate wiki 并发现

如果你想做一个 table-per-class-hierarchy 策略,那么你只需要在 ClassMap 中指定鉴别器列。

但是,据我了解,我没有鉴别器列。我的情况是根据外键引用确定子类。

注意:对于多个鉴别器列,请使用 DiscriminateSubClassesOnColumn("").Formula([insert custom sql here])

我找不到公式用法的好例子。对我的情况有帮助吗?我有点困惑,也许我做错了什么?

有人可以帮我吗?提前致谢 :)

0 投票
1 回答
798 浏览

c# - Fluent NHibernate - 批量而不是单独查询子属性集合

我有一个实体,上面有多个其他实体的集合,我想急切地加载它们,最好是一批。下面的示例设置:

实体映射:

并使用以下命令查询数据库:

当我查询实体 1 的数据库时,我得到一个实体 1 集合的返回 - 正如我所期望的那样,但是,使用 NHProf,我可以看到正在为每个实体 2/3 创建一个查询去数据库并单独收集它们,这意味着实体 1 的 10 行返回将触发 3 倍的查询。有没有办法批处理急切加载查询,而不是每个人都做一个

NHibernate 会产生更像

从而不需要查询数据库那么多次?

非常感谢任何帮助,如果需要更多详细信息,请告诉我。