问题标签 [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 投票
4 回答
3289 浏览

nhibernate - 使用 NHibernate 映射枚举集合

使用 NHibernate 映射枚举集合

具体来说,使用 Attributes 进行映射。

目前我有这个工作将集合映射为 Int32 类型,NH 似乎可以处理它,但它并不完全理想。

尝试将集合映射为我尝试映射的枚举类型时,我收到的错误是“无法确定类型”。

我发现一个帖子说将一个类定义为

然后将枚举映射为 CEnumType,但这会给出“CEnumType is not mapped”或类似的东西。

那么有没有人有这样做的经验?

所以无论如何,只是一个简单的参考代码片段来举一个例子

那么,任何人都得到了正确的属性让我将这个枚举集合映射为实际的枚举?如果它们也作为字符串而不是整数存储在数据库中,那就太好了,但这并不是完全必要的。

0 投票
2 回答
914 浏览

nhibernate - NHibernate:如何组合两个类的字段?

这是我的数据库模型的简化版本。我有两个表:“Image”和“HostingProvider”,如下所示:

[图片]

  • ID
  • 文件名
  • 托管服务提供商 ID

[托管服务提供商]

  • ID
  • base_url

Image HostingproviderId 是与 HostingProvider 表的多对一外键关系。(每张图片都有一个托管服务提供商)。

本质上,我希望能够让我的 Image 类看起来像这样:

[图片]

  • ID
  • base_url
  • 文件名

在 NHibernate 中,如何创建一个映射文件,将 HostingProvider 表中的 base_url 组合到 Image 类中?

0 投票
2 回答
1116 浏览

nhibernate - 有没有办法在 NHibernate 中伪造一个 ID 列?

假设我将一个简单对象映射到包含重复记录的表,并且我想在我的代码中允许重复。我不需要在这个表上更新/插入/删除,只显示记录。

有没有办法可以在我的映射文件中放置一个假的(生成的)ID 列来欺骗 NHibernate 认为这些行是唯一的?创建复合键将不起作用,因为所有列中可能存在重复项。

如果这不可能,解决此问题的最佳方法是什么?

谢谢!

编辑:查询似乎是要走的路

0 投票
5 回答
4182 浏览

c# - NHibernate:一个基类,多个映射

我对 NHibernate 比较陌生,但在最近的几个程序中一直在使用它,我爱上了它。我遇到了需要将 4-5 个数据库中的数据聚合到一个数据库中的情况。具体来说就是序列号数据。每个数据库都有自己的映射文件,但最终实体都共享相同的基本结构(Serial 类)。

我知道 NHibernate 想要每个类都有一个映射,所以我最初的想法是有一个基本的串行类,然后从它为每个不同的数据库继承并创建一个唯一的映射文件(继承的类将有零内容)。这对于抓取所有数据和填充对象应该很有用。然后我想做的是使用基类映射将这些继承的类(不确定正确的术语是什么)保存到基类表中。

问题是我不知道如何强制 NHIbernate 为对象使用特定的映射文件。使用“session.save()”时,将继承的类转换为基类没有任何作用(它抱怨没有映射)。

有没有办法明确指定要使用的映射?还是我缺少一些 OOP 主体来更具体地将继承的类转换为基类?或者这个想法只是一个坏想法。

我能找到的关于 NHibernate(第 8 章)的所有继承内容似乎并不完全适用于这个函数,但我可能错了(每个具体类的 table-per-concrete-class 看起来可能有用,但我可以'关于 NHibernate 如何计算出要做什么,我完全不了解它)。

0 投票
2 回答
3550 浏览

database - NHibernate 多对一和唯一约束违规

我在尝试在 NHibernate 中建模多对一关系时遇到问题,其中“一”侧的对象对列具有唯一约束。问题如下:

我有两张表,“Person”和“Country”。每个人都有一个且只有一个与之关联的国家。一个国家可以有很多人(真的!:)),一个国家的名字是唯一的。以下是Person端的映射:

乡村方面:

现在在数据库中,我在 Country 表中的 Name 列上添加了一个唯一约束。如果我在 Person 实例上调用 Save(),NHibernate 只是尝试执行 INSERTS,而我希望它检查 Country Name 是否存在并在 Person 表的 CountryID 列中使用其 ID。相反,由于违反数据库中的唯一约束而引发异常。

在我看来,Nibernate 应该有足够的映射元数据来做正确的事情(或者属性上的唯一属性不能确保这一点?)。有谁知道如何做到这一点或有解决方法?

谢谢,

马汀

0 投票
2 回答
7943 浏览

c# - Fluent NHibernate - 如何一对一映射子类?

假设我有三个班级。实例化 A 是有效的,但也有特殊情况 B 和 D 是 A 的子类,增加了额外的信息。

我将如何在(流利的)NHibernate 中为此映射文件?

我尝试了以下方法,但它根本不起作用:

0 投票
2 回答
2075 浏览

c# - 加入共享一个公共列但没有外键的 NHibernate 类

我有几个表要映射到类。表格如下所示:

基本上我想要做的是将 Product Table 加入 AssetId 上的 Disposal 表,以便我的 Product 具有由资产连接的 Disposal 集合。我已经定义了以下映射,但 NHibernate (1.2) 似乎忽略了包中定义的键列,并选择通过 ProductId 将 Product 表连接到 Disposal 表(即 Product.ProductId = Disposal.AssetId)。我不确定这是否是一个错误,或者我是否没有正确定义它,但如果有人有办法做到这一点,我会非常感激。

0 投票
1 回答
489 浏览

nhibernate - 映射具有多个包含相同对象类型的集合属性的类

我们的系统会生成包含用户选择的收件人/抄送/密送联系人列表的电子邮件。我想将它们按如下方式存储在我们的 SQL Server 数据库中,这是简化的数据库表结构:

对我来说,这看起来像是电子邮件和联系人对象之间的多对多关系。但是,我希望电子邮件域对象为每个列表的联系人(收件人/抄送/密送)具有 3 个单独的 IList 属性,这样我就可以启用以下代码:

这可以在不添加额外的域对象(EmailContact)的情况下完成吗?我是否需要将两个多对一关系与像Billy McCafferty 提到的其他域对象一起使用?

另外,我将如何表示我的 NHibernate 映射文件?

0 投票
3 回答
1028 浏览

nhibernate - NHibernate - 有没有什么好的工具可以帮助你配置文件?

是否有任何基于 GUI 的工具可以帮助您编写和维护配置文件?任何代码工具来生成配置文件?让这件事变得更容易的最好方法是什么?大多数人现在只是在使用 Castle ActiveRecord 吗?

0 投票
1 回答
25702 浏览

nhibernate - Fluent NHibernate:如何创建一对多的双向映射?

基本问题:如何在 Fluent NHibernate 中创建双向一对多映射?

细节:

我有一个有很多孩子的父对象。在我的情况下,孩子没有父母是没有意义的,所以在数据库中,我希望父母的外键有 NOT NULL 约束。我正在从 Fluent NHibernate 映射自动生成我的数据库。

我有一个父母有很多像这样的子对象:

这是我开始的映射:

在 Detail 表中,Summary_id 应该为 Not Null,因为在我的情况下,没有附加到摘要对象的 Detail 对象是没有意义的。但是,仅使用 HasMany() 映射会使 Summary_id 外键为空。

我在 NHibernate 文档(http://www.hibernate.org/hib_docs/nhibernate/html/collections.html)中发现“如果需要父级,请使用双向一对多关联”。

那么如何在 Fluent NHibernate 中创建双向一对多映射呢?