【发布时间】:2015-11-29 09:06:52
【问题描述】:
使用 SQL Server 2012 数据库,我需要实现一个功能,以允许删除表中的一行以及基于外键约束的所有引用子项。
鉴于Cascade delete 是不可能的,因为我无法触及这个数据库,是否有人在 C# 中编写了一个存储过程或一些代码来删除父行及其所有子行,无论孩子们使用的深度有多深
他们的外键?
或者带有一些指针的链接/文章?
示例
表格:
- 客户
- 客户地址
- 客户地址
- 客户产品
- ProductOrdered
如果我决定删除Id=1 的客户,它应该删除
-
CustomerTable中的一行 -
CustomerAddress中带有customerId=1的所有行 - 属于
CustomerId=1的所有customerProducts - 属于
Customer的所有ProductOrdered以及关联的customerProductId
基本上我们只知道根表Customer,它是CustomerId(通用实现)。
欢迎任何不涉及第三方工具的建议。
非常感谢您的任何建议
【问题讨论】:
-
您是否正在使用您不知道其架构的数据库?从开发人员的角度来看,这没有任何意义
-
您可以使用来自 sql server 的元数据来生成查询或使用 SMO 在 C# 中构建它。但正如斯塔夫所说,这没有任何意义。您绕过所有业务规则,只是假设可以删除某些内容?如果你甚至不知道架构,你怎么知道它没关系?
-
@Steve,我知道架构,但我不拥有数据库,它是一个客户端数据库。我也不确定是否反对。我认为你对它的阅读比你应该阅读的更多。我没有想详细解释一下,因为不可读,没有人回复。我尽量简洁。
标签: c# sql-server smo