Adicionar modelos e controladores
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
.
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.
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.
Na caixa de diálogo Adicionar Scaffold , selecione "Controlador da API Web 2 com ações, usando o Entity Framework". Clique em Adicionar.
Na caixa de diálogo Adicionar Controlador , faça o seguinte:
- 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.) - Verifique "Usar ações do controlador assíncrono".
- Deixe o nome do controlador como "AuthorsController".
- Clique no botão mais (+) ao lado de Classe de Contexto de Dados.
Na caixa de diálogo Novo Contexto de Dados , deixe o nome padrão e clique em Adicionar.
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 deDbContext
.
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.