4
respostas

Erro de excessão ao executar o Add-Migration

Na aula 4 do Entity Framework Core, ao executar o Add-migration Inicial após fazer as alterações explicadas na aula, o console esta me dando o seguinte erro no final da execução: "Uma exceção foi acionada pelo destino de uma chamada" e não cria a Migration inicial.Pesquisei sobre o erro, achei alguma coisa falando sobre a string de conexão porem não consegui resolver.

4 respostas

Oi Juliano, tudo bom?

Infelizmente, acredito que só o texto do erro não seja suficiente pra gente conseguir simular seu problema e te auxiliar da forma mais assertiva possível =/

Você pode compartilhar com a gente o erro completo? Ou até mesmo o código do seu projeto pra eu tentar executar?

Aguardo seu retorno =)

Abraço

André obrigado pelo apoio e resposta. Segue aqui as classes do meu projeto. O erro acontece no momento em que rodo o comando Add-Migration no console do gerenciador de pacote.

namespace Entity.Alura.Loja.Testes.ConsoleApp
{
    public class Produto
    {
        public int Id { get; set; }
        public string Nome { get; set; }    
        public string Categoria { get; set; }
        public double Preco { get; set; }

        public override string ToString()
        {
            return $"Produto: {this.Id}, {this.Nome}, {this.Categoria}, {this.Preco}";
        }
    }
}
using Microsoft.EntityFrameworkCore;

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

        protected override void OnConfiguring(DbContextOptionsBuilder optionsbuilder)
        {
            optionsbuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=LojaDb;Integrated Security=True;TrustServerCertificate=False;");
        }
    }
}
using System.Collections.Generic;

namespace Entity.Alura.Loja.Testes.ConsoleApp
{
    interface IProdutoDAO
    {
        void Adicionar(Produto p);
        void Atualizar(Produto p);
        void Remover(Produto p);
        IList<Produto> Produtos();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

namespace Entity.Alura.Loja.Testes.ConsoleApp
{
    public class ProdutoDAOEntity : IProdutoDAO, IDisposable
    {
        private LojaContext contexto;
        public ProdutoDAOEntity()
        {
            this.contexto = new LojaContext();
        }

        public void Adicionar(Produto p)
        {
            contexto.Produtos.Add(p);
            contexto.SaveChanges();
        }

        public void Atualizar(Produto p)
        {
            contexto.Produtos.Update(p);
            contexto.SaveChanges();
        }

        public void Dispose()
        {
            contexto.Dispose();
        }

        public IList<Produto> Produtos()
        {
            return contexto.Produtos.ToList();
        }

        public void Remover(Produto p)
        {
            contexto.Remove(p);
            contexto.SaveChanges();
        }
    }
}

Opa, Juliano, tenta uma string de conexão parecida com:

"Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=LojaDb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"

E me passa o feedback? =)

Apenas abri algumas permissões.

André obrigado pelo apoio e me desculpa a demora. Fiquei um tempo sem acessar a plataforma. Eu tentei usar uma string como a que você indicou mas não funcionou. Então comecei outro projeto do zero e no momento de instalar os pacotes do Entity fiz com muita atenção com relação as versões estarem corretas. Deu tudo certo e funcionou perfeitamente... Acredito que tenha feito alguma coisa errada e não instalei a versão correta no projeto anterior