我有一个SQL关联表,它只有两列,它们都是外键(来自其他两个表的两个ID的ID),表示两个数据对象之间的关系。这些列具有NOT NULL约束似乎很自然,因为在对象和null之间或在null和null之间建立关系似乎没有意义。
令我感到惊讶的是,当我的(WPF,LINQ,C#)程序试图清除对象的关联时,以下提交会引发一个异常,说其中一列不能为空。我不希望它为null,我希望清除整行。
现在,我可以删除null约束以绕过异常,但这似乎不应该是必要的。
编辑:实际上,SQL Server不会让我这样做,因为这两个值是主键,主键中不允许使用null,这是有道理的。 ..但同样,我正在尝试删除行,而不是将其ID设置为null。
所以我问:
为什么删除行(通过clear()
)导致有关空列值的异常?
和
我是否有其他方法可以清除我应该执行的行,或者我是否需要删除not null约束?
或者还有其他我不理解的东西?
详细说明:
我的表有两列:
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。