O mapeamento desse relacionamento pode ser feito apenas por anotações?
O mapeamento desse relacionamento pode ser feito apenas por anotações?
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!