EF Code First:我可以在不更改数据库的情况下执行删除级联吗?

时间:2016-12-13 13:05:20

标签: c# entity-framework

我想在我的实体的某些关系中激活删除级联,但我不想更改数据库。我想知道在实体框架中是否有办法做到这一点。

我的意思是,如果EF只是自动生成SQL调用以删除父项时删除所有相关记录,那将是完美的。

我试图将它添加到我的SonEntityTypeConfiguration类:

public SonEntityTypeConfiguration()
    {
        HasRequired(e => e.Parent)
            .WithMany()
            .WillCascadeOnDelete(true);

        //(...)
    }

但我收到此错误:

  

支持AuditoriaUnitOfWork'从那时起,情境就发生   数据库已创建。考虑使用Code First Migrations   更新数据库

所以似乎仍在尝试更改数据库。

有没有办法实现这一点,或者我应该放弃,只是让我的数据库管理员改变它?

2 个答案:

答案 0 :(得分:1)

WillCascadeOnDelete依赖于数据库级别的级联删除。因此需要更改架构。

在EF层未实现级联删除的原因是因为无法保证甚至可以使用EF。有许多方法可以访问数据库,但数据库有责任确保维护参照完整性。它不能依赖更高层。

答案 1 :(得分:0)

你有两个选择:你可以使用需要迁移的WillCascadeOnDelete(*如果你没有首先实现它),或者你可以自己删除任何相关的对象。