Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何清除SQL关联表而不删除其;“不为空”;约束?_Sql Server_Exception_Linq To Sql_Database Design_Constraints - Fatal编程技术网

Sql server 如何清除SQL关联表而不删除其;“不为空”;约束?

Sql server 如何清除SQL关联表而不删除其;“不为空”;约束?,sql-server,exception,linq-to-sql,database-design,constraints,Sql Server,Exception,Linq To Sql,Database Design,Constraints,我有一个SQL关联表,它只有两列,这两列都是外键(来自其他两个表的两个ID),表示两个数据对象之间的关系。这些列具有NOTNULL约束似乎很自然,因为在对象和NULL之间或NULL和NULL之间建立关系似乎没有意义 令我惊讶的是,当我的(WPF、LINQ、C#)程序试图清除对象的关联时,下面的submit会引发一个异常,其中一列不能为null。我不希望它为空,我希望整行都被清除 现在,我可以删除null约束以绕过异常,但这似乎不是必需的 编辑:实际上,SQL Server不允许我只这样做,因为这

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

令我惊讶的是,当我的(WPF、LINQ、C#)程序试图清除对象的关联时,下面的submit会引发一个异常,其中一列不能为null。我不希望它为空,我希望整行都被清除

现在,我可以删除null约束以绕过异常,但这似乎不是必需的

编辑:实际上,SQL Server不允许我只这样做,因为这两个值是主键,主键中不允许空值,这很有意义。。。但是,我再次尝试删除行,而不是将它们的ID设置为null

所以我问:

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

是否有其他方法可以清除这些行,或者需要删除NOTNULL约束

还是有什么我不明白的

详情:

我的表格有两列:

RecipeID (PK, FK, int, not null)
AltRecipeID (PK, FK, int, not null)
C#LINQ到SQL代码:

RecipeToUpdate.PFW_AlternateRecipes.Clear();
App.db.SubmitChanges();
提交时的例外情况:

试图消除PFW_配方和配方之间的关系 PFW_替代方案。然而,关系的一个外键 (PFW_AlternateRecipe.RecipeID)不能设置为null


谢谢你。这些都很有趣,但没有足够详细地解释我应该做些什么来冒险。第一个链接似乎最为相关,但它也表示,如果数据库没有级联删除规则,则会出现问题,而我的没有。它并没有明确说明如何设置所有这些,它需要改变模式。如果这对我来说完全有意义,我会这么做,我知道该怎么做,但我不知道。我确实看到在SQL Mgmt Studio中,我可以将删除规则设置为级联。但是,我不满足于此,我决定进一步查看我自己的数据库和代码,我看到我还有其他几个类似的表,它们都没有级联删除规则集,我可以并且确实从这个表和其他表中删除这些行,而不会出现异常。因此,我将代码从“RecipeToUpdate.PFW_AlternateRecipes.Clear();”切换到“foreach(RecipeToUpdate.PFW_AlternateRecipes中的PFW_AlterRecipe altRcp){App.db.PFW_AlternateRecipes.DeleteOnSubmit(altRcp);}”,这样工作没有问题。我不清楚为什么。有人知道吗?