问题标签 [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 回答
581 浏览

nhibernate - NHibernate 是否可以在不使用存储过程的情况下进行非规范化更新?

我正在考虑在一个项目中使用 NHibernate,该项目的数据库具有一定程度的计划非规范化(由 DBA 计划)。从一组表中读取并将一列映射到一个属性不是问题。但是,在更新时,我必须将一个属性映射回原始表中的原始列,并在非规范化表中更新该列的几个副本。是否可以在不使用存储过程的情况下使用 NHibernate 做到这一点?

编辑:虽然我倾向于同意 NXC 的回答,但这个问题是关于如何解决 NHibernate 的问题,而不是在数据库中解决问题。

0 投票
2 回答
540 浏览

nhibernate - 休眠下一个/上一个兄弟映射

我正在使用 nHibernate 映射一个与 .NET 的 System.Web.SiteMapNode 非常相似的对象。为了使我的对象与这个 .NET 对象相似,我希望它包含 ParentNode、PreviousSibling、NextSibling 和 ChildNodes 复杂属性。

该表看起来有点像这样,并且可以更改:

  • 编号(整数)
  • 标题(字符串)
  • 描述(字符串)
  • 键(字符串)
  • ParentNodeId (int)
  • OrdinalPosition (int)
  • 只读(布尔)
  • 网址(字符串)

我可能有一些其他属性不需要模拟 .NET SiteMapNode 对象(如 isExternal 布尔值),但我认为这些对这个问题无关紧要。

我当前的映射如下所示:

ParentNode 映射很简单,因为它应该只是一个简单的多对一映射。这是我的代码(未经测试,但我相信它是正确的):

子节点的映射应该只是一个简单的包,它将带回 ParentNodeId 等于当前 ID 的所有 SiteMapNode 对象。我还没有写这个包,但我相信这没什么大不了的。

我似乎无法解决的问题是如何执行 Next/Previous Sibling 属性。该对象可以从每个节点的以下公式派生:

  • PreviousSibling:与当前对象具有相同的ParentNode (ParentNodeId),并且其OrdinalPosition 应该比当前对象的OrdinalPosition 小一。
  • NextSibling:与当前对象具有相同的ParentNode(ParentNodeId),并且其OrdinalPosition应该比当前对象的OrdinalPosition大一。

我认为这可以通过多对一映射的形式属性来实现。这可能吗?我还没有找到一个很好的例子来说明这是如何工作的。

0 投票
5 回答
1750 浏览

nhibernate - NHibernate中未映射的列?

我正在使用 Oracle 中的旧数据库,并且我的一些表的列设置为 NOT-NULL,这是我在域模型中不想要的,但是,显然,我需要指定至少一些默认值的地方被保存到数据库中(例如,组表可能有一个“缩进”列 thaqt 总是需要一个 char(8) 值)。

我将如何在 NHibernate 中解决这个问题?是否有捷径可寻?如果没有,有没有人知道我可以做到这一点的方法(我考虑过使用 Inteceptor,但真的不知道从哪里开始......)。我无法更改数据库架构,所以遗憾的是,这不是一个选项(流利的版本也可以......)。

0 投票
2 回答
310 浏览

nhibernate - NHibenate级联问题

您好我在以下场景中更新子对象时遇到问题。

映射如下:

家长:日历

子项:DefaultCategory

用于更新日历的代码:

问题是,当我通过 ui 添加或删除 defaultCategories 并将日历的更新版本发送回后端时,NHibernate 会返回更新的日历,一切看起来都很好。但是,任何应该被删除的 defaultCatergories 都保留在默认的 Categories 表中。因此,当我刷新 ui 并再次调用日历时,我可以看到集合没有改变。

您是否认为我需要按 parentID 删除所有 defaultCatergories 然后重新创建?我的印象是 NHibernate 会为你解决这个问题?非常感谢任何帮助或指示。

0 投票
3 回答
1945 浏览

nhibernate - (Fluent) NHibernate : 一个由来自不同表的字段组成的实体

有没有办法编写 NHibernate 映射,以便您可以拥有一个由来自不同数据库表的字段组成的实体?

例如,我有一个人员和地址表,我希望地址字段出现在我的人员对象中。

我想要一个这样的实体:

0 投票
6 回答
487 浏览

c# - 归一化后的 NHibernate 映射

请帮助我——我是 NHibernate 的新手,我似乎找不到我要找的东西。

我在数据库中有两个表:FundFundBalance. AFund可以有很多FundBalances,而 aFundBalance只有一个Fund

在 C# 中,只有FundBalance类。表中的列与Fund表中的列连接FundBalance需要映射到FundBalance类的属性上。

例如,Fund表包含FundName属性,FundBalance表包含AvailableBalance属性。这两个表是join的,join的结果需要映射到类的FundNameandAvailableBalance属性上FundBalance

问题:我如何用 NHibernate 做到这一点?奖励:如何使用 FluentNHibernate 指定映射?

我想到的一种解决方案是在数据库中创建一个视图,但如果映射可以完全使用 NHibernate 完成,我会更喜欢它。

0 投票
2 回答
1276 浏览

nhibernate - 是否可以使用 NHibernate 在属性上设置默认值

我使用 Fluent NHibernate 进行映射,并将 SchemaExport 类用于数据库模式。

NHibernate 是否可以在生成的数据库模式中为属性/列设置默认值?

0 投票
1 回答
13297 浏览

nhibernate - NHibernate 2.* 映射文件:如何定义可为空的 DateTime 类型(DateTime?)?

我知道 NHibernate 2.* 的重大变化之一是不再支持 NHibernate.Nullables。因此,您在映射文件中使用什么来映射可为空的 DateTime?类型?对于即:

可以理解的是不起作用:

并且不再支持:

我知道它一定很明显,但我没有找到它!

答案很简单:NHibernate 将在有问题的类上进行反射,并发现属性的反射类型是 DateTime?全部靠自己。

谢谢@正义!

0 投票
1 回答
413 浏览

nhibernate - 在 NHibernate 中映射兄弟姐妹

我一直在尝试使用 NHibernate 映射构建一个 SiteMapNode 样式的对象。目标是模仿 ASP.NET SiteMapNode 对象,以便可以使用 NHibernate 为动态后端构建自定义提供程序。

我遇到的问题是站点地图的树性质。ASP.NET 对象有一个下一个和上一个兄弟对象。这很好。我不想在我的 SiteMapNode 表中有 NextSiblingId 和 PreviousSiblingId。我决定,当我显示这些对象时,最好有一个 OrdinalPosition 属性。经过研究,似乎我无法在 NHibernate 中进行 NextSibling 和 PreviousSibling 属性映射。我想解决这个问题是制作一个兄弟姐妹系列。此集合将具有与所有者对象相同的 ParentNodeId。

这可能吗?

这是我到目前为止提出的映射文件:

Siblings 包返回与 ChildNodes 集合相同的内容。我只是不了解整个键和外键属性是如何工作的。我认为 key 元素上的 column 属性告诉 nHibernate 使用所有者对象上的该列来映射到外部对象的列。我只需要找出如何让 nHibernate 查看集合节点上的 ParentNodeId。任何人都可以帮忙吗?

0 投票
2 回答
1994 浏览

c# - 自联接关系具有附加属性时的 NHibernate 映射

当这种关系本身具有属性时,如何将一个类映射到同一类的其他实例?

我有一个名为 Person 的类,它映射到一个表 Person

我希望使用名为 PersonPerson 的连接表在 Person 和 Person 之间建立多对多关系:

我想要 PersonPerson 表中的以下属性:

这个问题和Billy McCafferty的链接到帖子解释说,由于 PersonPerson 表中的附加列,必须将 PersonPerson 关系从正常的 JOIN 提升到其自身的实体。但是,它没有解释当它是自加入时要做什么。不同之处在于,如果我要求所有与Dave Dee (ID = 1) 相关的人,我不仅应该得到Tich (ID = 5),而且我也应该得到Dozy (ID = 2),因为 Dave Dee也在 RelatedPersonID 列中。

到目前为止,我的解决方案是在我的 Person 类中有两个属性。

并在 hbm 中有以下内容:

这似乎有点笨拙和不雅。NHibernate 通常对大多数日常问题都有优雅的解决方案。以上是明智的做法还是有更好的方法?