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

Lançamento da Exception System.InvalidOperationException ao executar o método RecuperarProdutos( )

Ao executar o programa principal (Program.cs) com o método RecuperarProdutos(), não retorna nenhum tipo de valor, apenas lança a exceção System.InvalidOperationException.

static void Main(string[] args)
        {
            RecuperarProdutos();      
            Console.ReadLine();
        }

Segue com a estrutura do método:

private static void RecuperarProdutos()
        {
            using (var repo = new LojaContext())
            {
                IList<Produto> produtos = repo.Produtos.ToList(); // Linha na qual é lançada a exceção.
                Console.WriteLine("Foram encontrados {0} produtos. ", produtos.Count);
                foreach (var item in produtos)
                {
                    Console.WriteLine(item.Nome);
                }
            }
        }

Observação: A exceção é lançada com a descrição "No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions object in its constructor and passes it to the base constructor for DbContext.'"

Classe LojaContext:

using Microsoft.EntityFrameworkCore;
using System;

namespace Alura.Loja.Testes.ConsoleApp
{
    internal class LojaContext : DbContext
    {
        public DbSet<Produto> Produtos { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {

        }
    }
}
1 resposta
solução!

Olá Paulo, tudo bem?

Pelo erro que você passou, está faltando o construtor no seu contexto. E ele é muito importante, porque será ele que irá passar informações para o construtor da classe DbContext.

public LojaContext(DbContextOptions<LojaContext> options) : base(options)
{
}

Monte o construtor e depois nos diga se o problema era esse. No aguardo!