Wie deaktiviere ich die Kaskadenlöschung für Verknüpfungstabellen in EF Code-First?

Ich möchte Kaskadenlöschungen für eine Verknüpfungstabelle mit Entity Framework Code-First deaktivieren. Wenn zum Beispiel viele Benutzer viele Rollen haben und ich versuche, eine Rolle zu löschen, möchte ich, dass diese Löschung blockiert wirdes sei denn Dieser Rolle sind derzeit keine Benutzer zugeordnet. Ich entferne bereits die Kaskadenlöschkonvention in meinemOnModelCreating:

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

Und dann habe ich die Benutzerrollen-Verknüpfungstabelle eingerichtet:

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

Wenn EF jedoch die Datenbank erstellt, erstellt es eine Löschkaskade für die Fremdschlüsselbeziehungen, z.

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

Wie kann ich verhindern, dass EF diese Löschkaskade generiert?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage