问题标签 [nhibernate-cascade]

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

c# - 使用 NHibernate 实现可追溯性级联?

我已阅读inversecascade映射属性,并想知道:

  • 是否可以在我的场景中使用它们?如果是的话,
  • 如何相应地参数化它们?

假设我有两个类,Customer并且Invoice都需要可追溯性,TraceableEntity.

我正在为我的所有实体使用存储库模式,因此存储库被注入NHibernate.ISession到那里的构造函数中。事实上,我为每个实体都有一个存储库,Customer并且Invoice.

因为我需要用户登录,所以我认为这与业务模型无关,所以我将它设置在存储库的 Save 方法中,因为只有 ISession 知道用于连接底层数据库的用户,并且存储库依赖于它。这样,商业模式就不会被无用的信息污染。

另外,由于这种可追溯性的需要,我失去了inversecascade映射属性的功能和易用性,否则,我不知道如何将它们用于我的特定需求。

我们来看看BaseRepository.Save()方法。

TraceableEntity

Customer

Customer.hbm.xml

Invoice

Invoice.hbm.xml

话虽如此,我想知道是否有另一种可能更好的方法来做到这一点,因为实际上,我需要在CustomerRepository, 中重写该BaseRepository.Save()方法,只为了调用该InvoiceRepository.Save()方法,如下所示:

另外,我想知道发票是否有可能“知道”谁是客户,而不必在保存时分配 Customer 属性,并让 NHibernate 魔术为我工作?

0 投票
1 回答
931 浏览

nhibernate - cascade="all" 还是 cascade="save-update"?NHibernate 一对多不会更新

遇到的问题

当我创建一个带有子集合的瞬态实例时,一切都会被持久化。

另外,如果我更新其中一个子对象的实例,则在我保存父对象时它不会更新。

我实际上正在使用cascade="all"

Problem reproduction

当我加载了所有客户事件并更改了发票时,就会出现问题,尽管我总是使用相同的ISession.

逐步调试清楚地显示repository.Save()正在执行的方法,并且更改不会显示在底层数据库中。

可以直接针对数据库表进行更新,因此没有任何约束会导致数据库端更新失败。

附上一些代码以防万一。

Customer.hbm.xml

Customer

Invoice.hbm.xml

Invoice

CustomerRepository

相关文章

任何帮助表示赞赏。

0 投票
1 回答
291 浏览

java - 休眠自我双向OneToMany级联删除不起作用

我有一个自我双向关系的问题,级联删除不起作用,我有以下实体,它的作用基本上是将一个具有多个级别的家谱放在一起,如果我尝试类似 em.remove (family) 它不会删除孩子们并捕获该异常“违反完整性约束 - 找到子记录”

桌子

ID

姓名

id_father

0 投票
2 回答
1024 浏览

c# - 删除级联不适用于 NHibernate

我有一个表 Communication,它引用了 PersonCompany。在 PersonCompany 的映射中,我为此参考定义了 Cascade-Delete:

但是当我现在执行闲置的 HQL 查询时:

我总是得到这个 SqlException:

DELETE 语句与 REFERENCE 约束“FK_PersonCompany_Communication”冲突。冲突发生在数据库“proconact”、表“dbo.Communication”、列“PersonCompanyId”中。该语句已终止。

我认为,NHibernate 现在应该删除通信中引用的记录级联 - 不应该吗?

我希望有人可以帮助我,我做错了什么。

0 投票
1 回答
50 浏览

nhibernate-mapping - 删除记录上的休眠级联问题

我对级联一对多关系有疑问。我的一个表包含一个组件,该组件链接到另一个表,这是我的画廊(画廊与其他表有多种关系。)。然后该组件在我的一个基类中使用。我使用实体开发人员生成代码,并通过以下几行完成:Baseinfo.hbm.xml

……

由于我有时需要将其设置为 null,因此我将 not-null 更改为“false”。一切正常,直到我遇到删除记录。将 LocationMap 设置为 null 后,我检查了数据库,发现图像记录仍然存在。经过一些论坛后,我确实还在级联选项中添加了“delete-orphan”,man: cascade="all,delete-orphan" 但它没有用,我还将应用程序置于调试模式,并在执行保存代码后,我尝试了这在即时窗口上: session.Flush(); 那没有用...我不想经历丑陋的编码,并且记得删除以后代码的记录,因为它不起作用...,我该怎么办?!

0 投票
1 回答
76 浏览

c# - 部分类中属性的级联值

我有一个映射和 POCO,如下所示。问题是tbFNamesFeature保存此对象时没有更新(而tblFeature)我尝试了不同的值cascade,但没有效果,所以我不得不说有些东西我没有得到。(见 ??? 在 xml 中)。
我究竟做错了什么?

tbFNamesFeature有 2 列:

FNamesId (PK, int, not null)
FeatureId (PK, int, not null)

特征.cs

Feature.part.cs

0 投票
1 回答
111 浏览

nhibernate - Nhibernate高效级联删除

在使用 nHibernate 的删除上下文中,当删除带有子集合的父级时,我想知道为什么 Nhibernate 会为子级逐行删除(在子 PK 上)

为什么nhibernate不能做

例如,如果父母有 10 万个孩子,效率会更高。我搜索了许多主题而没有找到正确的答案。我也做了一些测试,但没有成功一个想法?