0
respostas

Questionamento Projeto Inicial

QUAL FOI O PROBLEMA?

Baixando a solução inicial deste módulo (disponibilizada no link) e executando o projeto API para testar a consulta de artista (assim como o Rafael faz no primeiro vídeo), me deparei com o seguinte erro:

"
System.InvalidOperationException: 'An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure' to the 'UseSqlServer' call.'

SqlException: Cannot open database "ScreenSoundV1" requested by the login. The login failed.
"

SOBRE O PROBLEMA

Observando a exceção lançada, pensei "a conexão com o banco de dados está sendo feita no banco errado, já que durante o último curso usamos o BD ScreenSoundV0 e o erro está acusando que não consigo acessar o BD ScreenSoundV1.

Pensei em ver o que está configurado em ScreenSound.Shared.Dados/Banco/ScreenSoundContext.cs, que é a classe responsável pela conexão com o banco de dados, na variável connectionString, que deve estar com o banco de dados errado, mas não, no projeto inicial, esta é a definição da variável

connectionString = "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ScreenSoundV0;Integrated Security=True;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False"

Logo, deve haver algum outro trecho da solução onde a conexão bom o banco de dados local é feita para o projeto API. Encontrei essa definição em
ScreenSound.API /appsettings.Development.json, no campo "ScreenSoundDB", que está definido no projeto inicial como

"ConnectionStrings": {
"ScreenSoundDB": "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ScreenSoundV1;Integrated Security=True;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False"
}

Temos ali a definição do banco local de desenvolvimento como sendo " Initial Catalog=ScreenSoundV1'.

COMO RESOLVER O PROBLEMA?

Para resolver o problema, optando por continuar com o uso do banco de dados ScreenSoundV0, só é preciso mudar esse valor no arquivo appsettings.Development.json
...Initial Catalog=ScreenSoundV0;......

INTERESSANTE OBSERVAR
Para nós iniciantes na área que seguimos o curso até aqui, ficamos com a ideia de que a conexão com o banco de dados dependia exclusivamente do que estava definido no projeto ScreenSound.Shared.Dados, mas na verdade, nas configurações do projeto API, em appsettings.Development.json, nesse caso específico de testar somente o projeto API, também foi preciso observar outras definições.

Fica aí mais um caso de problema --> 15 abas de pesquisa e documentação no chrome --> solução