如何在不删除“非空”约束的情况下清除SQL关联表?

时间:2012-08-22 20:22:55

标签: sql-server exception linq-to-sql database-design constraints

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

0 个答案:

没有答案
相关问题