Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Erro inesperado ao passar um bodycontent qualquer no corpo da requisição

Está ocorrendo um comportamento inesperado quando tento criar um objeto com o corpo da requisição inválido.

Por exemplo, ao tentar criar um Session sem nada no body request, ele retorna o que eu esperava mesmo, uma mensagem informando quais campos devem ser passados: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém se eu passar um corpo com outros campos ele retorna um erro no banco:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Há alguma forma de tratar isso com o próprio Mapper? Sei que da pra fazer internamente na função chamada, mas acho que seria gambiarra.

1 resposta
solução!

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 ✓.