【问题标题】:Cascading deletes with multiple foreign keys使用多个外键级联删除
【发布时间】:2021-12-10 12:29:10
【问题描述】:

我正在编写一个使用实体框架来处理我的数据库的应用程序。

我的数据库设计如下所示:

我想使用级联删除,所以当“customer”表中的客户被删除时,“rentals”表中的相应行也会被删除。

反之亦然,每当从“产品”表中删除产品时,租金中的相应行也会被删除。

这可能吗?

如果是这样,当启用级联删除时,Entity Framework 是否将其设置为自动?还是我需要手动配置?

【问题讨论】:

  • " 每当从“产品”表中删除产品时,租金中的相应行也会被删除。” - 这不是一个好的设计!出于显而易见的原因...不要删除产品。具有 isEnabled 标志或使用到期日期范围。拥有产品的公司和拥有公司的客户似乎也很奇怪。

标签: c# database entity-framework


【解决方案1】:

这可能吗?

是的。如何 - 稍后。

如果是这样,实体框架在级联删除时是否将其设置为自动 启用了吗?

没有。 SQL Server 无法使用外键约束来处理它——只允许一个更新/删除路径。这是一个严重的限制,但可以通过一些代码来解决。

使用触发器可以做什么。 INSTEAD OF(代替delete,执行触发器),并且在触发器中可以删除两个相关的表,然后删除原来的数据。

EF 然后起作用 - 任何删除都会触发导致预期数据被删除的触发器。

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2020-10-30
    • 2012-09-21
    • 2011-02-24
    • 2018-04-13
    相关资源
    最近更新 更多