首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluent NHibernate one-to-one没有级联全删除孤立

Fluent NHibernate one-to-one没有级联全删除孤立
EN

Stack Overflow用户
提问于 2012-12-14 00:39:21
回答 3查看 3.2K关注 0票数 4

我正在将现有的*.hbm.xml文件更新到fluent ClassMaps中,并且偶然发现我们的映射文件中有一个错误,我不知道正确映射它的默认行为。

映射文件具有:

代码语言:javascript
复制
<one-to-one name="LineItemAssembly" 
            class="LineItemAssembly" 
            cascade="all-delete-orphan" />

在使用Fluent时,我希望它映射到:

代码语言:javascript
复制
HasOne<LineItemAssembly>(x => x.LineItemAssembly)
                        .Cascade.AllDeleteOrphan();

但是,AllDeleteOrphan()不是级联的一个选项(正确地说是这样)。我理解这是因为它不是一个选项,而是因为它是映射文件中的一个错误。什么是使用Fluent的等效映射,以便我的fluent映射具有与.hbm.xml文件完全相同的功能?我认为将Cascade排除在流畅映射之外将是默认行为,但我就是不确定。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-14 04:06:05

最后,我只需要找出哪里出了问题并修复它,而不考虑默认的流畅行为。在http://brunoreis.com/tech/fluent-nhibernate-hasone-how-implement-one-to-one-relationship/的帮助下,我能够解决这个问题。

我需要添加.Cascade.All()。然而,我真正需要的是在LineItemAssembly类的映射中脱离HasOne关系的.ForeignKey()。

票数 1
EN

Stack Overflow用户

发布于 2017-05-17 21:37:17

现在在NHibernate 4.1中支持这一点--一对一关系级联"all-delete-orphan“现在被正确支持(问题NH-1262已在4.1中得到修复)。我对此进行了测试,可以确认它是否正常工作--一旦您将子项的一对一属性设置为null,它就会对子项发出sql delete命令。

不幸的是,fluent nhibernate不支持它,因为它上一次更新是在2015年。但是,你可以自己从源代码(https://github.com/jagregory/fluent-nhibernateHow to build Fluent NHibernate?;我在这方面有点困难-你需要安装ruby,rubygem,运行InstallGems.bat,手动运行"bundle install“(由于某种原因没有为我执行),并使用"rake”命令构建解决方案)来构建流畅的nhibernate。

可从here下载支持HasOne AllDeleteOrphan的定制构建(由我)的FluentNHibernate.dll版本2.0.3.1

票数 4
EN

Stack Overflow用户

发布于 2012-12-14 02:16:10

您不能在1:1关系中有一个孤立项,根据定义,两个记录都必须存在。删除总是以1:1的方式级联,我不知道为什么XML映射允许这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13864384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档