我有一个 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。