EF6 Каскадное удаление много ко многим - PullRequest
0 голосов
/ 11 октября 2019

У нас есть проект EF, который изначально был базой данных первым. Позже мы сначала перешли на Code, что означает, что в коде существует множество миграций, которых нет.

Теперь нам нужно создать новую базу данных для этого проекта. Итак, стерли все миграции и сделали новую начальную миграцию. Когда мы пытаемся обновить / создать базу данных, мы сталкиваемся с проблемой каскадного удаления и связи «многие ко многим». Отношение определяется с помощью свободного отображения как:

modelBuilder.Entity<Assistant>()
            .HasMany(e => e.Clients)
            .WithMany(e => e.Assistants)
            .Map(m => 
                m.ToTable("Clients_Bind_Assistants")
                .MapLeftKey("AssistantID")
                .MapRightKey("ClientID")
            );

При запуске update-database мы получаем следующую ошибку:

Введение ограничения FOREIGN KEY 'FK_dbo.Clients_Bind_Assistants_dbo.Clients_ClientID' onТаблица «Clients_Bind_Assistants» может вызывать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, или измените другие ограничения FOREIGN KEY.

Можем ли мы как-нибудь с помощью Fluent mapping определить каскадное удаление в false?

Редактировать:

            modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();

решает эту текущую проблему, но у нас есть несколько отношений «многие ко многим» в проекте, что делает это страшным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...