问题标签 [nhibernate-collections]

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 回答
4171 浏览

nhibernate - 获取没有主键 NHibernate 的孩子

我正在尝试通过映射将对象集合放入父对象中。

我有一个主键是 guid (Id) 的父对象“ScoreCard”和一个主键是 guid (Id) 的子“Score”对象。我想根据两个对象都有的两个字段为父对象选择子对象,但我无法让它工作,这是映射

我没有设计数据库,但 ScoreCard 对象来自一个视图,该视图返回我需要的两个列以及邪恶的 guid。无论我尝试过什么,NHibernate 都会不断抛出关于外键与主键不同的异常。

在我看来,这似乎是最简单的要求,给定一些标准来收集东西,为什么我会这么卡?

感谢您的帮助,对于糟糕的示例代码(在亲戚家观看潜意识高尔夫)感到抱歉。

0 投票
1 回答
1142 浏览

nhibernate - 延迟加载的 NHibernate 标准

谁能告诉我是否可以向 NHibernate 延迟加载的集合添加条件。

例如,假设我有一个包含员工的部门......我通过 id 获取部门,然后我懒加载员工......但是假设有 1000 名员工,我只想要最后雇用的员工30天。

GetDeptById(1)
   |
   --延迟加载员工(其中 HireDate >= 7/1/2009)

似乎我可以使用映射文件中的过滤器来做到这一点......但是我可以在代码中的延迟加载中添加某种标准吗?

0 投票
1 回答
570 浏览

nhibernate - 将 NHibernate 集合过滤器与 DDD 集合一起使用

我正在尝试在 NHibernate 中映射域模型。领域模型是用我认为的 DDD 风格实现的。映射主要工作,但是当我尝试在集合上使用集合过滤器时,我得到一个异常,它说:集合未被引用。

我知道问题出在我如何实现该集合。我的问题:是否可以在以这种方式实现的集合上使用 nHibernate 中的集合过滤器,或者我应该忘记它,即 nHibernate 不能使用它。

代码如下:

主要问题是我不想公开内部地址集合。其他一切都有效,我使用 field.camelcase-underscore 访问,因此 nHibernate 直接与该字段交互。我一直在研究 Hibernate in Action 这本书,现在我在第 7 章,它处理集合过滤器。

有没有办法解决。我已经通过像这样公开内部集合来使其工作:

但我真的不想这样做。

帮助真的很感激。

吉德

0 投票
1 回答
135 浏览

c# - 以正确的方式使用 NHibernate 更新实体集合

关于 NHibernate 如何工作的一个简单问题:
我有一个父实体,它有一个其他子实体的集合。这些子实体具有对它们所属的父实体的引用。现在我想为父实体实现一个 Add 方法,该方法将添加一个子实体。该 Add 方法是否应该只将子元素添加到其新的父集合中,还是应该更新子元素的父引用,或者还应该从其先前的父集合中删除添加的实体?我必须用那种方法做所有这些事情还是 NHibernate 会为我做些什么?

谢谢。

0 投票
1 回答
294 浏览

asp.net-mvc - NHibernate - 基于属性/列的排序实体+如何管理?

我正在使用 NHibernate 编写一个 ASP.NET MVC 电子商务应用程序,我希望最终用户能够控制产品类别的排序(不仅仅是让它们按字母顺序显示等)。

通常,我会将 OrderIndex/Sort 列(类型int)添加到 Category 表,并将属性添加到 Category 域类。但问题是在对类别进行排序、添加和删除时,必须不断地管理这个特殊的 OrderIndex/Sort 列。我宁愿把它隐藏起来,让它透明,这样调用者就不必直接设置属性。

当然,我可以编写自己的代码来管理所有这些,但想知道 NHibernate 是否有内置的东西可以帮助我,或者它是否可以自动连接这个属性。

如果不是,那么我正在考虑创建一个 OrderedEntity 基类(所有域对象都派生自一个实体基类),并创建一个 IOrderedRepository 基存储库。像这样的东西:

这看起来是个好方法吗?我不想重新发明一个劣质的轮子。

0 投票
3 回答
6015 浏览

nhibernate - NHibernate 自定义集合类型

我有一个名为的实体对象Patient,该实体有一个名为的属性Visits,它的类型为VisitsCollection.

VisitsCollections是的子类,IList<Visit>但它也向集合添加了一些自定义逻辑(如自动排序、一些验证、通知等)。

需要使用自定义集合类型,因为它将一些数据添加到添加到集合中的实体并透明地执行其他一些文书工作。

现在我想在 NHibernate 中映射它,所以我创建了:

我遇到了一个例外:

无法将类型为“NHibernate.Collection.PersistentList”的对象转换为类型“...VisitsCollection”

每当我访问访问属性时。

我也尝试过这样映射它:

但是,我仍然遇到了这个异常:

自定义类型未实现 UserCollectionType: .....VisitsCollection

我不想VisitsCollection从任何 NHibernate 类型继承我,因为集合类是我希望它与 DAL 无关的框架的一部分(因为它将在许多场景中使用 - 不仅与数据库一起使用)。

关于如何映射这个,保留我的代码结构的任何想法?

提前致谢。

0 投票
2 回答
308 浏览

nhibernate - 不寻常的 NHibernate 集合/继承映射

这是我的相关课程:

以下是相关的映射部分:

希望到现在为止一切都清楚。

我正在尝试做的事情如下:选择我的Section对象时,我希望它们只包含“轻量级”ArticleMetadata对象。但是当保存Section到数据库时,我希望 NHibernate 也能持久Article化对象:

目前,SaveOrUpdate退出时没有任何错误,但一个完整的Article对象只能部分保存。也就是说,其Content属性的价值永远不会进入数据库。

单独保存Article( session.Save(new Article(...));) 按预期工作,保存所有映射的属性。

总结一下:我想将ArticleMetadataArticle对象都添加到Section.Articles集合中,并希望它们被适当地保存。这种行为完全可能吗?

0 投票
1 回答
1581 浏览

wpf - Fluent-Nibernate with wpf:约定使用 uNhAddIns...ObservableListType默认?

我正在尝试将 Fluent-Nibernate 与需要 Observable 集合(实现INotifyCollectionChanged接口)的 wpf 一起使用。

uNHAddins:NHibernate的非官方插件我发现

实现INotifyCollectionChanged。它可以像这样在 Fluent-Nibernate 中配置

有谁知道如何使用 Fluent-Nibernate实现一个始终使用ObservableListType 作为默认 IList 实现的约定?

更新:完美的解决方案是用 Fluent-NHibernate-Automapper 替换

0 投票
0 回答
162 浏览

.net - NHibernate:使用 IStatelessSession 手动处理读取值的集合

在将实体批量加载到数据库中期间,我有一个场景,其中传入实体依赖于数据库中的现有实体来计算值。此依赖项本身具有一组值类型,用于帮助计算此值。由于我使用IStatelessSession的是 ,因此通过会话加载实体时会忽略此集合。我想手动处理此集合的负载,但无法找到有关如何执行此操作的指导。

任何人都可以建议手动将值查询到集合中的最简单方法吗?

0 投票
1 回答
356 浏览

nhibernate - Nhibernate iesicollection 包含返回 false

Nhibernate 强制您使用 Iesi Set,而不是 net 4 ISet 接口。在以下代码片段中,我检查 iesi 集是否包含项目:

变量 _substances 引用了一个 HashedSet。我添加了测试变量只是为了检查代码作为临时措施。我像这样重写了 Equals 方法:

这会导致项目将 Id (Guid) 作为散列返回。如果我签入调试器,我会得到以下结果:

如何使用该集合的 contains 方法在集合中没有发现完全相同的对象?我什至可以在调试器中做到这一点:

显然, _substances.Remove(substance) 也不起作用。经过一些额外的研究后,我发现 NH 用它自己的 Persistent Generic 集替换了该集合。使用此套件时会出现问题。如果我从该集合中检索一个项目并在同一集合上调用包含,它总是返回 false。我已经覆盖了 GetHashCode 和 Equals,甚至将 return true 放在 Equals 方法中。