No meu ocorreu um erro ao criar uma sessao e não consigo entender o que aconteceu: A sessão FilmeId:1 e CinemaId:1 já estava criada. Mas estou tentando com outras combinaçãoes e gera o erro 500 e no Get do filme fica como vazio
No meu ocorreu um erro ao criar uma sessao e não consigo entender o que aconteceu: A sessão FilmeId:1 e CinemaId:1 já estava criada. Mas estou tentando com outras combinaçãoes e gera o erro 500 e no Get do filme fica como vazio
Obs.: Descobri que faltava um relacionamento. Gerei todas as migrations do zero para pegar a nova atualização, mas ainda assim o erro persiste. No postman diz sobre esse "FilmeId1", não criei esse campo na tabela sessões, mas olhei na migration e parece que foi criada automaticamente:
rodando mais um Update-Database é informado: Joguei este erro no ChatGpt, mas mesmo assim, não entendi como solucionar,já que meu Context não parece ter nada de errado:
public class FilmeContext : DbContext
{
public FilmeContext(DbContextOptions<FilmeContext> opts) : base(opts)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Sessao>()
.HasKey(sessao => new {sessao.FilmeId,
sessao.CinemaId});
modelBuilder.Entity<Sessao>()
.HasOne(sessao => sessao.Cinema)
.WithMany(cinema => cinema.Sessoes)
.HasForeignKey(sessao => sessao.CinemaId);
modelBuilder.Entity<Sessao>()
.HasOne(sessao => sessao.Cinema)
.WithMany(filme => filme.Sessoes)
.HasForeignKey(sessao => sessao.FilmeId);
modelBuilder.Entity<Endereco>()
.HasOne(endereco => endereco.Cinema)
.WithOne(Cinema => Cinema.Endereco)
.OnDelete(DeleteBehavior.Restrict);
}
public DbSet<Filme> Filmes { get; set; }
public DbSet<Cinema> Cinemas { get; set; }
public DbSet<Endereco> Enderecos { get; set; }
public DbSet<Sessao> Sessoes { get; set; }
}
Olá
O erro 500 geralmente é um erro interno do servidor, o que indica que algo deu errado no lado do servidor (neste caso, provavelmente no seu código).
Vamos tentar resolver isso juntos. O erro pode estar ocorrendo devido a várias razões, mas de acordo com o contexto da aula, uma possibilidade é que você esteja tentando criar uma sessão com uma combinação de FilmeId e CinemaId que já existe, o que violaria a restrição de chave primária composta que definimos para a entidade Sessão.
No código da aula, definimos que a chave primária da tabela Sessão é composta pelos campos FilmeId e CinemaId:
builder.Entity<Sessao>()
.HasKey(sessao => new { sessao.FilmeId, sessao.CinemaId });
Isso significa que cada combinação de FilmeId e CinemaId deve ser única. Se você tentar inserir uma nova sessão com uma combinação de FilmeId e CinemaId que já existe na tabela Sessão, o Entity Framework irá lançar um erro.
Aqui está um exemplo prático do que pode estar acontecendo:
Para resolver esse problema, você deve garantir que cada sessão que você tenta criar tem uma combinação única de FilmeId e CinemaId.
Espero ter ajudado e bons estudos!