当前位置: 首页 > 编程语言 > C#

HasManyToManyFluentNHibernate映射删除错误分享

时间:2023-04-10 21:54:31 C#

HasManyToManyFluentNHibernate映射删除错误我一直在一个名为Task的实体上处理多对多映射。一个任务可以有很多孩子和很多父母。它们之间有一个只有两个FK列“ParentTaskId”和“ChildTaskId”的连接表。到目前为止,这是我想出的。//多对多父母HasManyToMany(x=>x.Parents).Table("TaskDependency").ParentKeyColumn("ParentTaskId").ChildKeyColumn("ChildTaskId").Inverse().Not.LazyLoad().Cascade.保存更新();//多对多孩子HasManyToMany(x=>x.Children).Table("TaskDependency").ParentKeyColumn("ChildTaskId").ChildKeyColumn("ParentTaskId").Not.LazyLoad().级联.SaveUpdate();这里有一些示例代码可以帮助我说明我的问题。以下代码有效:_taskRepository.Save(_taskVendor);_taskRepository.Save(_taskClientVendor);_taskRepository.Save(_taskClient);_taskVendor.Children.Add(_taskClientVendor);_taskClientVendor.Children.Add(_taskClient);_taskRepository.Save(_taskClientVendor);_taskRepository.Delete(_taskVendor);_taskRepository.Delete(_taskClientVendor);_taskRepository.Delete(_taskClient);但是,如果我将删除语句的顺序更改为:_taskRepository.Delete(_taskVendor);tory_taskRe(_taskClient);_taskRepository.Delete(_taskClientVendor);我在我的多对多连接表中遇到了fk约束冲突。我认为这与我在地图上设置逆向的方式有关。它会影响执行查询的顺序以避免这种精确的fk约束问题。有没有办法映射它,以便我可以删除任何一方的实体,孩子或父母,但没有这个例外?我在映射的两边都尝试了相反的操作,但这导致我的多对多关系没有被保存。>_<任何帮助将不胜感激。得手动删除以上是C#学习教程:HasManyToManyFluentNHibernate映射删除所有错误分享的内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——voidDelete(Tasktask){foreach(varparentintask.Parents){parent.Childs.Remove(task);}session.Delete(任务);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: