LLBLGen级联删除?

时间:2010-08-12 16:08:31

标签: sql-server llblgenpro cascading-deletes llblgen

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

你有这些表格:

Customer:  
-Id

Order:  
-Id  
-CustomerId

OrderDetail:
-Id
-OrderId

现在,我想删除一个特定的客户以及依赖它的所有东西(所有订单及其所有订单的订单详情)。如果我删除一个客户,然后删除其Id作为外键的订单,那么数据库将会合适,我需要做的很多:

  1. 获取客户
  2. 获取客户订单
  3. 获取每个订单的订单详细信息
  4. 删除每个OrderDetail
  5. 删除每个订单
  6. 删除每位客户
  7. 现在,这似乎是一个非常常见的任务 - 我认为某处有某种删除(Entity entityToDelete,bool isRecursive)功能。无论如何,有没有简单的方法来做到这一点?

1 个答案:

答案 0 :(得分:4)

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

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

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

相关问题