2

有没有什么简单的方法可以在 LLBLGen 中做最好的描述为“级联删除”?我正在寻找的一个例子:

你有这些表:

Customer:  
-Id

Order:  
-Id  
-CustomerId

OrderDetail:
-Id
-OrderId

现在,我想删除一个特定的客户和所有依赖它的东西(它的所有订单,以及它的所有订单的订单详细信息)。由于如果我在删除将其 Id 作为外键的订单之前删除客户,数据库将会出现问题,因此我几乎需要:

  1. 获取客户
  2. 获取客户的订单
  3. 获取每个订单的 OrderDetails
  4. 删除每个 OrderDetail
  5. 删除每个订单
  6. 删除每个客户

现在,这似乎是一项非常常见的任务——我认为某处有某种 Delete(Entity entityToDelete, bool isRecursive) 函数。无论如何,有什么简单的方法可以做到这一点吗?

4

1 回答 1

4

不,LLBLGen Pro 不支持级联删除。我们没有内置它的原因如下: - 并不总是可以进行级联删除(想象一个菱形模型,其中两个/多个路径从 a 到 b。这也是为什么例如 sqlserver 并不总是执行 /允许级联删除 - 在每个实体的目标继承中,级联删除是不可能的。

我们确实支持直接在数据库上进行批量删除。因此,您不必先获取所有要删除的实体。例如,要删除客户订单的所有订单详细信息,请在 orderdetails 上创建直接删除,在其中您指定为 filter 一个 fieldcompareset 谓词,您可以在其中根据订单中的 customerid 指定订单过滤器。然后使用相同的谓词(没有连接)删除订单,然后删除客户。您可以将这些删除分组到一个工作单元中,以便更轻松地在事务中一次性运行它们。

如果您对此感到困惑,请在我们的论坛上发布问题:http: //www.llblgen.com/tinyforum。我们很乐意为您提供帮助

于 2010-08-12T17:16:03.323 回答