3
respostas

[Sugestão de Correção] ConnectionString Nula.

Olá pessoal,

no meu Visual Studio quando eu executava o comando: Add-Migration Inicial retornava um erro dizendo que a minha connection string estava nula, apesar de meu código estar igual ao do instrutor até então.

Depois de muito procurar, fui ver que a ordem que a propriedade ConnectionStrings era colocada no arquivo appsettings.json estava errada, pois a mesma estava embaixo da propriedade Logging, quando o correto seria estar acima, conforme descrito nessa issue do EntityFrameworkCore. Quando alterei a ordem, conforme descrito na issue em questão, consegui rodar o comando Add-Migration Inicial.

Logo, fica a sugestão para alterar isso nessa aula.

3 respostas

Boa noite, Cláudio! Como vai?

Obrigado por sua sugestão! É com participações como essa sua que fazemos da Alura uma plataforma cada vez melhor! Continue assim!

Contudo, uma coisa não ficou clara. Esse arquivo appsettings.json que vc citou não é exibido em nenhum momento dessa aula. Quando ele é criado ou apresentado e em que aula ocorre essa inversão de linhas que vc citou? Vc poderia colar aqui os links pra mim, por favor?

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Aula 03: Banco de Dados

Atividade 03: Configurando banco de dados

Link do vídeo

Minutagem: 02:25

Claudio,

A ordem das informacoes dentro do appsettings.json para pegar a conexao com banco nao interfere nessa captura de dados pela classe Startup. Eu testei das duas formas e funciona bem.

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "Default": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=CasaDoCodigo;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
  }
}

O motivo pelo qual funciona sem problema algum eh porque:

 string connectionString = Configuration.GetConnectionString("Default");
            services.AddDbContext<ApplicationContext>(options => {
                options.UseSqlServer(connectionString);
            });

O metodo GetConnectionString eh um sinonimo para

GetSection("ConnectionStrings")[name].

O [name] no nosso caso eh a chave "Default"

O que eu acho que aconteceu com voce foi que o appsettings.json tem um arquivo filho appsettings.Development.json e talvez voce tenha escrito seus detalhes de conexao la apesar e talvez gerado esse entendimento confuso.

Mas vai firme que funciona em qualquer ordem sem duvida alguma.