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

Uso do : base

Não entendi a utilização de ": base" para enviar o option através do construtor para a classe base.

Pra mim ficou meio confuso o entendimento, alguém poderia me explicar o que esta ocorrendo nesse ponto de uma forma mais clara.

Obrigado. :)

2 respostas
solução!

Fala, André, tudo bem?

Repare que como está escrito nosso código a configuração de banco de dados está fixa no método OnConfiguring().

//aqui estou informando que vou usar o SQL Server com a conexão específica...
UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=LojaDB;Trusted_Connection=true;");

Se houver uma mudança no banco de dados ou na string de conexão, você tem duas opções: ou alterar diretamente no código do método (opção que já utilizo no curso) ou deixar para quem está consumindo a classe LojaContext configurar as opções (para isso, o Entity declarou uma classe para representar as opções de configuração do contexto, chamada DbContextOptions).

Para implementar a segunda opção precisamos receber uma instância da classe DbContextOptions e usá-la para configurar o banco. Como receber essa instância? Através de um construtor cujo argumento de entrada é justamente um objeto desse tipo.

Mas porquê um construtor vazio? Porque na verdade vamos apenas repassar o objeto options para o construtor da classe ancestral DbContext que vai se encarregar de guardar as opções. Esse repasse é feito através da sintaxe : base(options).

public LojaContext(DbContextOptions<LojaContext> options): base(options)
 {  }

Daí, no método OnConfiguring(), basta testar se as opções já foram configuradas e, caso contrário, definir como padrão o SQL Server e conexão local como banco de dados.

Tranquilo? Espero que tenha conseguido desatar esse nó. Se não, vamos continuar conversando aqui, ok?

Ótima resposta Daniel, obrigado pela ajuda!