1
resposta

Uso de 'Set' no context

Não entendi muito bem porque esta sendo usado o context com Set: context.Set<Produto>().ToList(); não posso usar assim: context.Produto.ToList() ?

1 resposta

No caso Produto é uma Classe de Modelo, não uma instância de Banco de Dados, e também não é uma Classe declarada diretamente dentro de ApplicationContext (o qual context faz referência) então para que o Framework entenda como banco de dados teria 2 possibilidades:

  1. Declarar a instância ao aplicar no método: (utilizado na aula)

    context.Set<Produto>().ToList()

Onde ele basicamente faz a declaração da instância DbSet<Produto> no ato de executar a transação com o banco.

  1. Criar uma declaração genérica no DbContext referenciado:

A seguinte linha poderia ser adicionada dentro da classe ApplicationContext:

public DbSet<Produto> Produtos { get; set; }

Dessa forma seria pré-definido uma instância do tipo DbSet para acesso ao banco, referenciando ao modelo Produto, podendo ser aplicado sem a utilização do Set<T> em qualquer método que fosse fazer o uso da tabela definida na classe de modelo Produto

context.Produtos.ToList()

Ou seja, em ambos os casos precisará estar definindo como uma instância de Banco de Dados para poder saber qual tabela e modelo irá acessar.