ASP.NET Core:在表上引入FOREIGN KEY约束可能会导致循环或多个级联路径

时间:2017-02-01 13:14:15

标签: entity-framework

我想从CodeFist方法创建数据库(SQL server)。当我运行dotnet ef database update时,我收到错误:

Introducing FOREIGN KEY constraint 'FK_Tasks_JobComments_Users_OwnerId' on table 'Tasks_JobComments' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.

我发现了一些主题(其中大多数是旧的)。我在GitHub找到了帖子,但是这段代码:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
    {
        relationship.DeleteBehavior = DeleteBehavior.Restrict;
    }

无济于事 如果有外键我想阻止任何删除。我认为上层代码可以做到这一点,但是如何在使用dotnet ef database update时绕过错误? 我使用的是.NETCoreApp 1.1版。

1 个答案:

答案 0 :(得分:0)

您的迁移文件夹包含用于创建数据库的迁移文件。在此文件中搜索导致问题的约束。 (在您的情况下" FK_Tasks_JobComments_Users_OwnerId")并更改

onDelete: ReferentialAction.Cascade);

onDelete: ReferentialAction.NoAction);

如何在OnModelCreating(ModelBuilder builder)方法中修复/避免它,直到现在我都没有弄明白。