Boa tarde!
Adicionei a nova migration com o DeleteBehavior alterado para Restrict conforme explicado na aula "Deleção em cascata", porém o comportamento esperado (remover gerente não acarretar na remoção dos cinemas associados) não funcionou.
Não foi demonstrado em vídeo esse comportamento em funcionamento, então não sei se é algum erro meu ou a explicação não está correta.
Arquivo AppDbContext:
using FilmesApi.Models;
using FilmesAPI.Models;
using Microsoft.EntityFrameworkCore;
namespace FilmesApi.Data
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> opt) : base(opt)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Endereco>()
.HasOne(endereco => endereco.Cinema)
.WithOne(cinema => cinema.Endereco)
.HasForeignKey<Cinema>(cinema => cinema.EnderecoId);
builder.Entity<Cinema>()
.HasOne(cinema => cinema.Gerente)
.WithMany(gerente => gerente.Cinemas)
.HasForeignKey(cinema => cinema.GerenteId)
.OnDelete(DeleteBehavior.Restrict);
}
public DbSet<Filme> Filmes { get; set; }
public DbSet<Cinema> Cinemas { get; set; }
public DbSet<Endereco> Enderecos { get; set; }
public DbSet<Gerente> Gerentes { get; set; }
}
}
Arquivo Migration:
using Microsoft.EntityFrameworkCore.Migrations;
namespace FilmesApi.Migrations
{
public partial class AlterandorelaçãoderemoçãoentreGerenteeCinemadeCascadedefaultparaRestrict : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Cinemas_Gerentes_GerenteId",
table: "Cinemas");
migrationBuilder.AddForeignKey(
name: "FK_Cinemas_Gerentes_GerenteId",
table: "Cinemas",
column: "GerenteId",
principalTable: "Gerentes",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Cinemas_Gerentes_GerenteId",
table: "Cinemas");
migrationBuilder.AddForeignKey(
name: "FK_Cinemas_Gerentes_GerenteId",
table: "Cinemas",
column: "GerenteId",
principalTable: "Gerentes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
}
}