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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software