Jak wyłączyć kasowanie kaskadowe dla tabel linków w kodzie EF?

Chcę wyłączyć kasowanie kaskadowe dla tabeli łączy z kodem frameworka encji - najpierw. Na przykład, jeśli wielu użytkowników ma wiele ról i próbuję usunąć rolę, chcę, aby to usunięcie zostało zablokowanechyba że nie ma obecnie użytkowników powiązanych z tą rolą. Usunąłem już konwencję kaskadowego usuwaniaOnModelCreating:

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
    ...
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

Następnie ustawiam tabelę linków do roli użytkownika:

modelBuilder.Entity<User>()
    .HasMany(usr => usr.Roles)
    .WithMany(role => role.Users)
    .Map(m => {
        m.ToTable("UsersRoles");
        m.MapLeftKey("UserId");
        m.MapRightKey("RoleId");
    });

Jednak gdy EF tworzy bazę danych, tworzy kaskadę usuwania dla relacji klucza obcego, np.

ALTER TABLE [dbo].[UsersRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.UsersRoles_dbo.User_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[User] ([UserId])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[UsersRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.UsersRoles_dbo.Role_RoleId] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Role] ([RoleId])
ON DELETE CASCADE
GO

Jak mogę zatrzymać EF generując tę ​​kaskadę usuwania?

questionAnswers(3)

yourAnswerToTheQuestion