gpt4 book ai didi

nhibernate - Fluent NHibernate 一对一没有级联全删除孤儿

转载 作者:行者123 更新时间:2023-12-03 08:26:26 27 4
gpt4 key购买 nike

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

映射文件有:

<one-to-one name="LineItemAssembly" 
class="LineItemAssembly"
cascade="all-delete-orphan" />

使用 Fluent 时,我希望它映射到:
HasOne<LineItemAssembly>(x => x.LineItemAssembly)
.Cascade.AllDeleteOrphan();

但是,AllDeleteOrphan() 不是 Cascade 的一个选项(并且正确地如此)。我明白这是因为它不是一个选项,是因为它是映射文件中的错误。使用 Fluent 的等效映射是什么,以便我的 fluent 映射具有与 .hbm.xml 文件完全相同的功能?我认为将 Cascade 排除在 Fluent 映射之外将是默认行为,但我不确定。

最佳答案

这现在在 NHibernate 4.1 中得到支持 - 现在正确支持一对一关系级联“all-delete-orphan”(问题 NH-1262 已在 4.1 中修复)。我测试了它并且可以确认它正在工作 - 一旦你将 child 的一对一属性设置为空,它就会为 child 发出 sql delete 命令。

不幸的是,fluent nhibernate 不支持它,因为它最后一次更新是在 2015 年。但是,您可以从源代码( https://github.com/jagregory/fluent-nhibernateHow to build Fluent NHibernate? ;我对此有点挣扎 - 您需要安装ruby,rubygems,运行 InstallGems.bat,手动运行“bundle install”(由于某种原因没有为我执行),并使用“rake”命令构建解决方案)。

那么你所要做的就是移动方法AllDeleteOrphan来自 CollectionCascadeExpression类到 CascadeExpression类并构建它(您也可以使用 Visual Studio 2010+ 打开 FluentNHibernate.sln 来构建它,但您必须至少运行一次“rake”命令)。

enter image description here

自定义构建(由我)FluentNHibernate.dll 版本 2.0.3.1 与 HasOne AllDeleteOrphan 支持可以从
here

关于nhibernate - Fluent NHibernate 一对一没有级联全删除孤儿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864384/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com