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

LazyLoadingProxies -> Erro de HttpGet

fiz o seguinte código

        [HttpGet]
        public IEnumerable<Cinema> RecuperaCinemas()
        {
            return _context.Cinemas;
        }

Porem está dando este erro no postman quando tento fazer um Get com todos: ![](Erro GET )

Consegui resolver da seguinte forma:

        [HttpGet]
        public IActionResult showCinemas()
        {
            return Ok(_context.Cinemas.ToList());
        }

Porem não entendi o porque parou de funcionar, tambem gostaria de saber se essa forma está correta ou devo fazer de outra forma? Este erro só começou a dar depois de implementar o LazyLoadingProxies.

1 resposta
solução!

Bom dia Pedro, tudo bom?

Muito bacana você ter conseguido uma outra solução que funciona e utilizando corretamrente oIActionResult. Mas voltando ao primeiro erro, pela mensagem parece erro de conexão com o MySQL, mas verifique as configurações em:

AppDbContext:

using FilmesApi.Models;
using FilmesAPI.Models;
using Microsoft.EntityFrameworkCore;

namespace FilmesApi.Data
{
    public class AppDbContext : DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> opt) : base(opt)
        {

        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Endereco>()
                .HasOne(endereco => endereco.Cinema)
                .WithOne(cinema => cinema.Endereco)
                .HasForeignKey<Cinema>(cinema => cinema.EnderecoId);
        }


        public DbSet<Filme> Filmes { get; set; }
        public DbSet<Cinema> Cinemas { get; set; }
        public DbSet<Endereco> Enderecos { get; set; }
    }
}

Nas entidades:

    public class Cinema
    {
        [Key]
        [Required]
        public int Id { get; set; }
        [Required(ErrorMessage = "O campo de nome é obrigatório")]
        public string Nome { get; set; }
        public virtual Endereco Endereco { get; set; }
        public int EnderecoId { get; set; }
    }

        public class Endereco
    {
        [Key]
        [Required]
        public int Id { get; set; }
        public string Logradouro { get; set; }
        public string Bairro { get; set; }
        public int Numero { get; set; }
        [JsonIgnore]
        public virtual Cinema Cinema { get; set; }
    }

E na classe Startup:

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<AppDbContext>(opts =>     opts.UseLazyLoadingProxies().UseMySQL(Configuration.GetConnectionString("CinemaConnection")));
            services.AddControllers();
            services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
        }

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

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

Espero que tenha ajudado e, qualquer coisa, estamos à disposição!

Abraços e bons estudos 😄


Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software