Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro no SqlLoggerProvider.Create()

using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace Alura.Loja.Testes.ConsoleApp { class Program { static void Main(string[] args) { //compra de 6 pães franceses var paoFrances = new Produto(); paoFrances.Nome = "Pão Francês"; paoFrances.PrecoUnitario = 0.40; paoFrances.Unidade = "Unidade"; paoFrances.Categoria = "Padaria";

        var compra = new Compra();
        compra.Quantidade = 6;
        compra.Produto = paoFrances;
        compra.Preco = paoFrances.PrecoUnitario * compra.Quantidade;

        using (var contexto = new LojaContext())
        {
            var serviceProvider = contexto.GetInfrastructure<IServiceProvider>();
            var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
            loggerFactory.AddProvider(SqlLoggerProvider.Create());

            contexto.Compras.Add(compra);

            contexto.SaveChanges();
        }
    }
}

}

3 respostas

Olá!

O erro que está dando é referente a classe SqlLoggerProvider?

Na aula 3, que foi aquela aula opcional, descreve como cria essa classe. Caso queira ver as queries, reveja essa aula para chamar o change tracker, caso contrário, as únicas linhas que precisa para fazer o código rodar são:

using(var contexto = new LojaContext())
{
    contexto.Compras.Add(compra);
    contexto.SaveChanges();
}

Caso não seja isso, nos diga qual erro dá quando você passa o mouse em cima da classe ou quando tenta compilar.

No aguardo!

O erro dá nessa parte aqui: loggerFactory.AddProvider(SqlLoggerProvider.Create());

Error CS0103 The name 'SqlLoggerProvider' does not exist in the current context

solução!

Esse erro quer dizer que a classe em questão não existe no contexto atual, ou seja, ou ela está em um outro namespace ou ela realmente não foi criada.

A classe SqlLoggerProvider é uma classe que foi criada na terceira aula do curso (naquele link que deixei no meu comentário acima), se você não criou, assista essa aula e siga os passos do instrutor. Caso você já tenha desenvolvido esta classe, ela provavelmente está em outro namespace.

Você seguiu os passos desta aula? Essa classe foi criada em outro namespace?