CRUD ASP.net CORE – 03 Iniciando CRUD Cliente

Código fonte: https://github.com/waltercoan/faegaspnetcore2019 

Arquitetura 

  • O primeiro passo é criar em nosso projeto um novo pacote chamado Models, dentro deste pacote vamos criar nossa classe Client.cs 
  • Nesta classe vamos definir os dados que representam um Cliente e que serão armazenados no banco de dados. Observer que sobre o atributo Id colocamos a anotação [Key, DatabaseGenerated… para informar ao EFCore que o atributo Id é a chave primária e seu valor deve ser gerado automaticamente por uma Identity no banco de dados. 
  • Agora vamos criar uma nova pasta no projeto com o nome de Db, e dentro dela uma nova classe chamada AppDbContext. O objetivo desta classe é permitir a conexão com o banco de dados.  
  • Nesta nova classe AppDbContext, vamos herdar da classe DbContext, criar um método contrutor que recebe parâmetros de configuração da conexão com o banco e passa esses parâmetros para a super classe. Criamos uma propriedade DbSet do tipo Client para que o Entity Framework reconheça a classe de modelo, e sobre escrevemos o método OnModelCreating para alimentar o banco de dados com uma nova entidade. 
  • Em seguida alteramos o arquivo appsettings.json para incluir a string de conexão com o banco de dados, utilizando o SQLServer LocalDB 
  • Agora precisamos instalar as bibliotecas do Entity Framework para o SQLServer, para isso abra o console CMD na pasta do projeto asp.net Core e digite o comando: 
  • Agora podemos alterar o código da classe Startup.cs, para incluir o código necessário para carregar o DbContext AppDbContext dentro da nossa aplicação considerando a string de conexão informada no arquivo de configuração.  
  • Em seguida podemos retornar ao console e executar o comando para criar a primeira versão da configuração de migração do nosso banco de dados 
  • E devemos executar o comando para aplicar as migrações e atualizar o banco de dados. 
  • Os arquivos do banco de dados SQLServer serão criados na pasta c:\users\SEUUSUARIO 
  • Agora vamos criar nossa pasta, interface e classe de serviço 
  • Na interface de serviço vamos definir o método do código necessário para recuperar do banco de forma assíncrona todos os registros 
  • Então criamos nossa classe concreta para implementar a consulta. Observe que deve ser inserido no código o using Microsoft.EntityFrameworkCore para ter acesso aos métodos do DbSet<Client> . Essa classe receberá por injeção de dependência a instância da classe DbContext de forma automática, bastanto ter um construtor com o parâmetro. O metodo GetAll() utiliza chamada assíncrona async/await para consultar o banco de dados. 
  • Por fim precisamos alterar nossa classe Startup.cs para incluir no método ConfigureService a dependência para o servico IClientService. 
  • Em seguida vamos criar dentro da pasta Controller uma nova classe C# chamada ClientController. 
  • Essa classe Controller deve herdar a classe abstrata Controller, então foi criado o construtor que deve receber a dependência do nosso serviço. Então criamos nossa Action Index que chama o serviço para executar a consulta e retornar os dados para a View() 
  • Então criar a pasta Client dentro da pasta Views, e então criamos nosso arquivo de view. 
  • Dentro da view nos definimos nosso objeto Model que será uma lista de Client. Então construímos uma table que será carregada com os dados. 
  • Ao executar nossa aplicação