0

我有一个 SQL 关联表,它只有两列,它们都是外键(来自其他两个表的两个 ID),表示两个数据对象之间的关系。这些列具有 NOT NULL 约束似乎很自然,因为在对象和 null 之间或在 null 和 null 之间建立关系似乎毫无意义。

令我惊讶的是,当我的 (WPF, LINQ, C#) 程序尝试清除对象的关联时,以下提交会引发异常,指出其中一列不能为空。我不希望它为空,我希望清除整行。

现在,我可以放弃空约束来绕过异常,但这似乎没有必要。

编辑:实际上,SQL Server 不会让我这样做,因为这两个值是主键,并且主键中不允许有空值,这是有道理的......但是我再次尝试删除行,而不是将其 ID 设置为空。

所以我问:

为什么删除行(通过clear())会导致关于空列值的异常?

我是否有其他方法可以清除我应该做的这些行,或者我是否需要删除非空约束?

或者还有什么我不明白的?

细节:

我的表有两列:

RecipeID (PK, FK, int, not null)
AltRecipeID (PK, FK, int, not null)

C# LINQ-to-SQL 代码:

RecipeToUpdate.PFW_AlternateRecipes.Clear();
App.db.SubmitChanges();

提交例外:

已尝试删除 PFW_Recipe 和 PFW_AlternateRecipe 之间的关系。但是,不能将关系的外键之一 (PFW_AlternateRecipe.RecipeID) 设置为 null。

4

0 回答 0