问题标签 [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.
nhibernate - NHibernate 是否可以在不使用存储过程的情况下进行非规范化更新?
我正在考虑在一个项目中使用 NHibernate,该项目的数据库具有一定程度的计划非规范化(由 DBA 计划)。从一组表中读取并将一列映射到一个属性不是问题。但是,在更新时,我必须将一个属性映射回原始表中的原始列,并在非规范化表中更新该列的几个副本。是否可以在不使用存储过程的情况下使用 NHibernate 做到这一点?
编辑:虽然我倾向于同意 NXC 的回答,但这个问题是关于如何解决 NHibernate 的问题,而不是在数据库中解决问题。
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大一。
我认为这可以通过多对一映射的形式属性来实现。这可能吗?我还没有找到一个很好的例子来说明这是如何工作的。
nhibernate - NHibernate中未映射的列?
我正在使用 Oracle 中的旧数据库,并且我的一些表的列设置为 NOT-NULL,这是我在域模型中不想要的,但是,显然,我需要指定至少一些默认值的地方被保存到数据库中(例如,组表可能有一个“缩进”列 thaqt 总是需要一个 char(8) 值)。
我将如何在 NHibernate 中解决这个问题?是否有捷径可寻?如果没有,有没有人知道我可以做到这一点的方法(我考虑过使用 Inteceptor,但真的不知道从哪里开始......)。我无法更改数据库架构,所以遗憾的是,这不是一个选项(流利的版本也可以......)。
nhibernate - NHibenate级联问题
您好我在以下场景中更新子对象时遇到问题。
映射如下:
家长:日历
子项:DefaultCategory
用于更新日历的代码:
问题是,当我通过 ui 添加或删除 defaultCategories 并将日历的更新版本发送回后端时,NHibernate 会返回更新的日历,一切看起来都很好。但是,任何应该被删除的 defaultCatergories 都保留在默认的 Categories 表中。因此,当我刷新 ui 并再次调用日历时,我可以看到集合没有改变。
您是否认为我需要按 parentID 删除所有 defaultCatergories 然后重新创建?我的印象是 NHibernate 会为你解决这个问题?非常感谢任何帮助或指示。
nhibernate - (Fluent) NHibernate : 一个由来自不同表的字段组成的实体
有没有办法编写 NHibernate 映射,以便您可以拥有一个由来自不同数据库表的字段组成的实体?
例如,我有一个人员和地址表,我希望地址字段出现在我的人员对象中。
我想要一个这样的实体:
c# - 归一化后的 NHibernate 映射
请帮助我——我是 NHibernate 的新手,我似乎找不到我要找的东西。
我在数据库中有两个表:Fund
和FundBalance
. AFund
可以有很多FundBalances
,而 aFundBalance
只有一个Fund
。
在 C# 中,只有FundBalance
类。表中的列与Fund
表中的列连接FundBalance
需要映射到FundBalance
类的属性上。
例如,Fund
表包含FundName
属性,FundBalance
表包含AvailableBalance
属性。这两个表是join的,join的结果需要映射到类的FundName
andAvailableBalance
属性上FundBalance
。
问题:我如何用 NHibernate 做到这一点?奖励:如何使用 FluentNHibernate 指定映射?
我想到的一种解决方案是在数据库中创建一个视图,但如果映射可以完全使用 NHibernate 完成,我会更喜欢它。
nhibernate - 是否可以使用 NHibernate 在属性上设置默认值
我使用 Fluent NHibernate 进行映射,并将 SchemaExport 类用于数据库模式。
NHibernate 是否可以在生成的数据库模式中为属性/列设置默认值?
nhibernate - NHibernate 2.* 映射文件:如何定义可为空的 DateTime 类型(DateTime?)?
我知道 NHibernate 2.* 的重大变化之一是不再支持 NHibernate.Nullables。因此,您在映射文件中使用什么来映射可为空的 DateTime?类型?对于即:
可以理解的是不起作用:
并且不再支持:
我知道它一定很明显,但我没有找到它!
答案很简单:NHibernate 将在有问题的类上进行反射,并发现属性的反射类型是 DateTime?全部靠自己。
谢谢@正义!
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。任何人都可以帮忙吗?
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 通常对大多数日常问题都有优雅的解决方案。以上是明智的做法还是有更好的方法?