因此,在我的数据库的根目录中,我有一个表“Customer”。客户有6-7个其他表的外键,如收据、地址、文档等。如果我使用SubmitChanges()删除一个客户,是否会找出所有具有外键关联的记录并将其删除,或者我是否需要进行6次查询?
发布于 2010-01-06 05:48:29
只有在设置了数据库表以使用级联删除(即on delete cascade
)来执行此操作时,才会发生这种情况。
有关更多信息,请访问Insert, Update, and Delete Operations (LINQ to SQL)。
SQL to
不支持或不识别级联删除操作。如果要删除表中具有约束的行,则必须在数据库的外键约束中设置ON delete CASCADE规则,或者使用您自己的代码首先删除阻止父对象被删除的子对象。否则,将抛出异常。
发布于 2010-01-06 05:49:09
你对这些外键关系有什么样的级联作用?
默认情况下,大多数数据库系统(包括我假定您使用的SQL Server )都不会有任何"ON DELETE CASCADE“或任何其他操作-所以在这种情况下,不会发生任何事情。
此T-SQL查询将显示您的外键关系,以及是否定义了任何DELETE或UPDATE引用操作:
SELECT
name 'FK Constraint',
OBJECT_NAME(parent_object_id) 'Parent table',
OBJECT_NAME(referenced_object_id) 'Referenced table',
delete_referential_action ,
delete_referential_action_desc ,
update_referential_action ,
update_referential_action_desc
FROM
sys.foreign_keys
如果你想要某些事情发生,你需要确保这些FK关系被设置为使用这些级联操作。
有关更多详细信息,请参阅Cascading Referential Integrity Constraints上的MSDN文档。
https://stackoverflow.com/questions/2009327
复制相似问题