gpt4 book ai didi

c# - Linq 到 SQL : Error deleting many to many relationship

转载 作者:行者123 更新时间:2023-11-30 18:39:09 26 4
gpt4 key购买 nike

首先,让我们从我的错误开始:

"An attempt was made to remove a relationship between X and Y. However, one of the relationship's foreign keys cannot be set to null"

现在解释一下我正在尝试做的事情......

我有以下数据库表:Specimen、Male、Female、SpecimenRelationship。雄性永远是标本,雌性永远是标本。所以一个标本有两个一对多关系(但逻辑阻止一个标本同时设置)。此外,男性可以有一对多的女朋友,同样女性可以有一对多的男朋友(嘿,毕竟这是 21 世纪)。这已通过创建多对多表 (SpecimenRelationship) 解决。

SQL 中的关系已设置,以便样本删除级联到男性和女性。之后,所需的功能是删除男性/女性以级联到 SpecimenRelationship - 但由于 SQL 限制(多循环路径垃圾!),这没有完成。所以一个级联,另一个是 SetNull(假设 Male 是 SetNull)。

现在是哪里出了问题。当我从 Male 实体中删除 SpecimenRelationship 时,出现上述错误。但是为什么会这样呢?我什至没有看到我在哪里删除 Male 实体,我是不是不了解 Linq-to-Sql 的工作原理,为什么这不只是直接删除 SpecimenRelationship 条目?

下面是一些示例代码:

Male male = GetMaleFromDataContext();

SpecimenRelationship relationshipToRemove = male.SpecimenRelationships.Single(x => x.FemaleID == someFemaleID);

male.SpecimenRelationships.Remove(relationshipToRemove);

DB.SubmitChanges();//error thrown here

为什么关系级联在这里发挥作用?

最佳答案

在表上创建关系时,外键列的 NULL 约束会自动设置为 NOT NULL。

您需要将其设置为 NULL 并且您的级联规则将起作用(我认为)。

设计模式 (Management Studio) 中的属性名称是 Allow Nulls。

关于c# - Linq 到 SQL : Error deleting many to many relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10382184/

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