NHibernate: SaveOrUpdate by <natural-id>

Posted

技术标签:

【中文标题】NHibernate: SaveOrUpdate by <natural-id>【英文标题】: 【发布时间】:2010-12-09 17:25:50 【问题描述】:

是否有一种简单的方法可以根据是否已经存在具有相同 &lt;natural-id /&gt; 的实体来使 NH INSERT 或 UPDATE 实体?

实体使用&lt;many-to-one cascade="save-update" /&gt; 映射到另一个(根)实体。

【问题讨论】:

【参考方案1】:

不是自动的。您必须从数据库中读取该自然 ID 的记录是否已经存在,然后确定是否需要进行插入或更新。这当然意味着级联不起作用。

我在How do I Insert or Update (or overwrite) a record using NHibernate?中寻找类似的东西

【讨论】:

另一种解决方案是以实际执行 upsert 的方式编写 sql-insert。但我更喜欢一种连接 NHibernate 并强制它生成正确插入的方法。

以上是关于NHibernate: SaveOrUpdate by <natural-id>的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate子删除问题

NHibernate在脚下射击:协会所有权和版本控制

NHibernate 为新实体生成 INSERT 和 UPDATE

Hibernate中saveOrUpdate()和merge()的区别

Hibernate中saveOrUpdate()和merge()的区别

session.Merge 和 session.SaveOrUpdate 有啥区别?