1
resposta

[Dúvida] Relacionamento n:n

O mapeamento desse relacionamento pode ser feito apenas por anotações?

1 resposta

Olá, Anderson! Entendo que você está com dúvidas sobre o mapeamento de relacionamentos n:n no .NET 6.

Respondendo à sua pergunta, sim, o mapeamento de relacionamentos pode ser feito apenas por anotações, mas no caso do relacionamento n:n que você está estudando, foi utilizado o ModelBuilder para definir o relacionamento e a chave composta.

No exemplo do curso, o relacionamento entre as entidades Filme e Cinema é feito através da entidade Sessão. A Sessão tem uma chave composta, que é formada pelos IDs de Filme e Cinema.

No código, essa chave composta é definida no método OnModelCreating do FilmeContext.cs da seguinte forma:

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<Sessao>()
        .HasKey(sessao => new { sessao.FilmeId, sessao.CinemaId });
}

Aqui, estamos dizendo que a entidade Sessão tem uma chave composta formada pelos campos FilmeId e CinemaId.

Em seguida, o relacionamento entre as entidades é definido:

builder.Entity<Sessao>()
    .HasOne(sessao => sessao.Cinema)
    .WithMany(cinema => cinema.Sessoes)
    .HasForeignKey(sessao => sessao.CinemaId);

builder.Entity<Sessao>()
    .HasOne(sessao => sessao.Filme)
    .WithMany(filme => filme.Sessoes)
    .HasForeignKey(sessao => sessao.FilmeId);

Nesse trecho, estamos definindo que uma Sessão tem um Cinema, e um Cinema pode ter várias Sessões. O mesmo vale para o relacionamento entre Sessão e Filme.

Portanto, embora seja possível fazer mapeamentos usando apenas anotações, neste caso específico, foi usado o ModelBuilder para definir o relacionamento e a chave composta.

Espero ter ajudado e bons estudos!