Olá, Rafael! Tudo bem?
O erro está ocorrendo porque o corpo da requisição contém campos que não estão sendo esperados ou mapeados corretamente pela sua aplicação. Quando você envia um corpo de requisição com campos inválidos ou inesperados, o Entity Framework tenta mapear esses campos para a entidade correspondente e, ao não conseguir, gera um erro.
Uma forma de tratar isso é validar os dados que estão chegando na requisição antes de tentar salvá-los no banco de dados. Você pode fazer isso utilizando Data Transfer Objects (DTOs) que representem exatamente os dados que você espera receber na requisição. Assim, você pode validar os dados no DTO antes de mapeá-los para a entidade do domínio.
No seu caso, você pode criar um DTO para a criação de uma sessão que contenha apenas os campos esperados, como o FilmeId
. Por exemplo:
public class CreateSessaoDto
{
[Required]
public int FilmeId { get; set; }
// Adicione aqui outros campos que são esperados na criação de uma sessão
}
Você deve então usar esse DTO no seu controller para receber os dados da requisição. O ASP.NET Core validará automaticamente os campos com base nos atributos de validação que você colocou no DTO, como o [Required]
. Se a validação falhar, ele retornará um erro antes mesmo de tentar executar qualquer lógica de negócios ou interação com o banco de dados.
Além disso, você pode utilizar o AutoMapper
para mapear os dados do DTO para a entidade do domínio antes de salvá-los no banco de dados. Isso garante que apenas os dados válidos e esperados sejam passados para a camada de domínio e persistência.
Se mesmo com a validação e o mapeamento correto você ainda estiver enfrentando problemas, pode ser necessário verificar se as configurações do Entity Framework estão corretas e se as relações entre as entidades estão bem definidas, incluindo chaves estrangeiras e quaisquer regras de validação adicionais que possam estar causando o erro no banco de dados.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.