Compartilhar via


Adicionar modelos e controladores

Baixar Projeto Concluído

Nesta seção, você adicionará classes de modelo que definem as entidades de banco de dados. Em seguida, você adicionará controladores de API Web que executam operações CRUD nessas entidades.

Adicionar classes de modelo

Neste tutorial, criaremos o banco de dados usando a abordagem "Code First" para o EF (Entity Framework). Com o Code First, você escreve classes C# que correspondem a tabelas de banco de dados e o EF cria o banco de dados. (Para obter mais informações, consulte Abordagens de desenvolvimento do Entity Framework.)

Começamos definindo nossos objetos de domínio como POCOs (objetos CLR simples e antigos). Criaremos os seguintes POCOs:

  • Autor
  • Livro

Em Gerenciador de Soluções, clique com o botão direito do mouse na pasta Modelos. Selecione Adicionar e , em seguida, classe. Nome da classe Author.

Captura de tela da pasta Gerenciador de Soluções mostrando a pasta Modelos realçada em azul e os itens de menu Adicionar e Classe realçados em amarelo.

Substitua todo o código clichê em Author.cs pelo código a seguir.

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Author
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
    }
}

Adicione outra classe chamada Book, com o código a seguir.

using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Book
    {
        public int Id { get; set; }
        [Required]
        public string Title { get; set; }
        public int Year { get; set; }
        public decimal Price { get; set; }
        public string Genre { get; set; }

        // Foreign Key
        public int AuthorId { get; set; }
        // Navigation property
        public Author Author { get; set; }
    }
}

O Entity Framework usará esses modelos para criar tabelas de banco de dados. Para cada modelo, a Id propriedade se tornará a coluna de chave primária da tabela de banco de dados.

Na classe Book, o AuthorId define uma chave estrangeira na Author tabela. (Para simplificar, supondo que cada livro tenha um único autor.) A classe book também contém uma propriedade de navegação para o relacionado Author. Você pode usar a propriedade de navegação para acessar o relacionado Author no código. Digo mais sobre as propriedades de navegação na parte 4, Manipulando relações de entidade.

Adicionar controladores de API Web

Nesta seção, adicionaremos controladores de API Web que dão suporte a operações CRUD (criar, ler, atualizar e excluir). Os controladores usarão o Entity Framework para se comunicar com a camada de banco de dados.

Primeiro, você pode excluir o arquivo Controllers/ValuesController.cs. Este arquivo contém um controlador de API Web de exemplo, mas você não precisa dele para este tutorial.

Captura de tela da janela Gerenciador de Soluções mostrando com o arquivo dot c s dos Controladores de Valores realçado em vermelho indicando que ele deve ser excluído.

Em seguida, compile o projeto. O scaffolding da API Web usa reflexão para localizar as classes de modelo, portanto, precisa do assembly compilado.

No Gerenciador de Soluções, clique com o botão direito do mouse na pasta Controladores. Selecione Adicionare controlador.

Captura de tela da janela Gerenciador de Soluções com a pasta Controladores e os itens de menu Adicionar e Controlador realçados em azul e amarelo.

Na caixa de diálogo Adicionar Scaffold , selecione "Controlador da API Web 2 com ações, usando o Entity Framework". Clique em Adicionar.

Captura de tela da caixa de diálogo Adicionar Scaffold mostrando o Controlador web A P I 2 com ações usando a opção Entity Framework realçada em azul.

Na caixa de diálogo Adicionar Controlador , faça o seguinte:

  1. Na lista suspensa Classe de modelo, selecione a Author classe . (Se você não o vir listado na lista suspensa, certifique-se de ter criado o projeto.)
  2. Verifique "Usar ações do controlador assíncrono".
  3. Deixe o nome do controlador como "AuthorsController".
  4. Clique no botão mais (+) ao lado de Classe de Contexto de Dados.

Captura de tela da caixa de diálogo Adicionar Controlador mostrando o botão de adição circulado em vermelho e a classe Author selecionada na lista suspensa Classe de modelo.

Na caixa de diálogo Novo Contexto de Dados , deixe o nome padrão e clique em Adicionar.

Captura de tela da caixa de diálogo Novo Contexto de Dados mostrando o nome padrão no campo Novo tipo de contexto de dados.

Clique em Adicionar para concluir a caixa de diálogo Adicionar Controlador . A caixa de diálogo adiciona duas classes ao seu projeto:

  • AuthorsController define um controlador de API Web. O controlador implementa a API REST que os clientes usam para executar operações CRUD na lista de autores.
  • BookServiceContext gerencia objetos de entidade durante o tempo de execução, o que inclui o preenchimento de objetos com dados de um banco de dados, controle de alterações e dados persistentes para o banco de dados. Herda de DbContext.

Captura de tela da janela Gerenciador de Soluções com o arquivo dot c s do Controlador de Autores e o arquivo dot c s do Contexto do Serviço de Livro circulado em vermelho.

Neste ponto, compile o projeto novamente. Agora, siga as mesmas etapas para adicionar um controlador de API para Book entidades. Desta vez, selecione Book para a classe de modelo e selecione a classe existente BookServiceContext para a classe de contexto de dados. (Não crie um novo contexto de dados.) Clique em Adicionar para adicionar o controlador.

Captura de tela da janela Adicionar Controlador com a classe Modelo de livro selecionada no menu suspenso Classe de modelo.