1
resposta

Erro ao executar o método SaveChanges() do Contexto

Program.cs

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)
        {
            //GravarUsandoAdoNet();
            GravarUsandoEntity();
        }

        private static void GravarUsandoEntity()
        {
            Produto p = new Produto();
            p.Nome = "Harry Potter e a Ordem da Fênix";
            p.Categoria = "Livros";
            p.Preco = 19.89;

            using (var contexto = new LojaContext())
            {
                contexto.Produtos.Add(p);
                contexto.SaveChanges();
            }
        }

        private static void GravarUsandoAdoNet()
        {
            Produto p = new Produto();
            p.Nome = "Harry Potter e a Ordem da Fênix";
            p.Categoria = "Livros";
            p.Preco = 19.89;

            using (var repo = new ProdutoDAO())
            {
                repo.Adicionar(p);
            }
        }
    }
}

LojaContext.cs

using System;
using Microsoft.EntityFrameworkCore;

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

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=tcp:127.0.0.1,1433;Database=LojaDB;User=USER;Password=STRONG_PASSWORD;Trusted_Connection=true");
        }
    }
}

Erro

[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Microsoft.Data.SqlClient.InOutOfProcHelper' threw an exception. ---> System.EntryPointNotFoundException: GetModuleHandle assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Microsoft.Data.Common.SafeNativeMethods.GetModuleHandle(string)
  at Microsoft.Data.SqlClient.InOutOfProcHelper..ctor () [0x00006] in <66f85b345ca3400caaa2d65cb49fcb00>:0 
  at Microsoft.Data.SqlClient.InOutOfProcHelper..cctor () [0x00000] in <66f85b345ca3400caaa2d65cb49fcb00>:0 
   --- End of inner exception stack trace ---

Estou utilizando o Visual Studio for Mac e o SQL Server dentro de um container do Docker.

O erro ocorre exatamente na linha do SaveChanges().

Tentei observar em todos os métodos para ver se eu esqueci algum parâmetro ou algo nesse sentido, mas não consegui encontrar nada.

Alguma pista?

1 resposta

Olá Milver, tudo certo?

Esse erro ocorre devido a falta de uma dll na hora de compilar a aplicação. Não acredito que seja algum problema em relação a sua string de conexão, mas por desencargo de consciência, ela está certa, né? :)

Nunca utilizei o VS for Mac, mas tem alguma atualização pendente? Qual SDK está usando? Você tem suporte ao runtime do .Net Core 1.1? Você baixou o projeto inicial do curso ou criou um novo? Instalou a versão 1.1 do EF Core?

No aguardo!