Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.
Warning
Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.
Neste tutorial, as classes são adicionadas para gerenciar filmes em um banco de dados. As classes de modelo do aplicativo usam EF Core do Entity Framework Core () para trabalhar com o banco de dados. EF Core é um mapeador objeto-relacional (O/RM) que simplifica o acesso aos dados. Você escreve as classes de modelo primeiro e EF Core cria o banco de dados.
As classes de modelo são conhecidas como classes POCO (de "Plain-Old CLR Objects") porque não têm uma dependência de EF Core. Eles definem as propriedades dos dados armazenados no banco de dados.
Adicionar um modelo de dados
- Estúdio Visual
- de código do Visual Studio
No Gerenciador de Soluções , clique com o botão direito do mouse no projeto RazorPagesMovie>Adicionar>Nova Pasta. Nomeie a pasta
Models.Clique com o botão direito do rato na pasta
Models. Selecione Adicionar>classe. Dê o nome à classe Filme.Adicione as seguintes propriedades à classe
Movie:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models; public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } }
A classe Movie contém:
O campo
IDé exigido pelo banco de dados para a chave primária.Um [DataType] atributo que especifica o tipo de dados na propriedade
ReleaseDate. Com este atributo:- O usuário não é obrigado a inserir informações de hora no campo de data.
- Apenas a data é exibida, não as informações de hora.
O ponto de interrogação após
stringindica que a propriedade é anulável. Para obter mais informações, consulte Tipos de referência anuláveis.
DataAnnotations são abordados em um tutorial posterior.
Crie o projeto para verificar se não há erros de compilação.
Andaime o modelo do filme
Nesta seção, o modelo do filme é andaime. Ou seja, a ferramenta de andaime produz páginas para operações Criar, Ler, Atualizar e Excluir (CRUD) para o modelo de filme.
- Estúdio Visual
- de código do Visual Studio
Crie a pasta Pages/Movies:
- Clique com o botão direito do rato na pasta Páginas>Adicionar>Nova Pasta.
- Nomeie a pasta Filmes.
Clique com o botão direito do rato na pasta Pages/Movies>Adicionar>Novo Item Estruturado.
Na caixa de diálogo Adicionar Novo Andaime, selecione Razor Páginas usando o Entity Framework (CRUD)>Adicionar.
Complete a caixa de diálogo Adicionar Razor Páginas usando o Entity Framework (CRUD).
- No menu pendente da classe Model , selecione Filme (RazorPagesMovie.Models).
- Na classe de contexto Data, na linha, selecione o sinal + de adição (mais).
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
RazorPagesMovie.Data.RazorPagesMovieContexté gerado. - Na lista suspensa Provedor de banco de dados, selecione SQL Server.
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
- Selecione Adicionar.
O arquivo appsettings.json é atualizado com a cadeia de conexão usada para se conectar a um banco de dados local.
Warning
Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.
Arquivos criados e atualizados
O processo de andaime cria os seguintes ficheiros:
- Páginas/Filmes: Criar, Excluir, Detalhes, Editar e Indexar.
Data/RazorPagesMovieContext.cs
Os arquivos criados são explicados no próximo tutorial.
O processo de andaime adiciona o seguinte código realçado ao arquivo Program.cs:
- Estúdio Visual
- de código do Visual Studio
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapStaticAssets();
app.MapRazorPages();
app.Run();
As alterações Program.cs são explicadas neste tutorial mais adiante.
Criar o esquema de banco de dados inicial usando o recurso de migração do EF
O recurso de migrações no Entity Framework Core fornece uma maneira de:
- Crie o esquema de banco de dados inicial.
- Atualize incrementalmente o esquema do banco de dados para mantê-lo sincronizado com o modelo de dados do aplicativo. Os dados existentes na base de dados são preservados.
- Estúdio Visual
- de código do Visual Studio
Nesta seção, a janela Package Manager Console (PMC) é usada para:
Adicione uma migração inicial.
Atualize o banco de dados com a migração inicial.
No menu Ferramentas de, selecione Gerenciador de Pacotes NuGet>Console do Gerenciador de Pacotes.
No PMC, digite o seguinte comando:
Add-Migration InitialCreateO comando
Add-Migrationgera código para criar o esquema de banco de dados inicial. O esquema é baseado no modelo especificado emDbContext. O argumentoInitialCreateé usado para nomear a migração. Qualquer nome pode ser usado, mas por convenção é selecionado um nome que descreve a migração.
O seguinte aviso é exibido, que é abordado em uma etapa posterior:
Nenhum tipo foi especificado para a coluna decimal 'Preço' no tipo de entidade 'Filme'. Isso fará com que os valores sejam truncados silenciosamente se não se ajustarem à precisão e escala padrão. Especifique explicitamente o tipo de coluna do servidor SQL que pode acomodar todos os valores usando 'HasColumnType()'.
No PMC, digite o seguinte comando:
Update-DatabaseO comando
Update-Databaseexecuta o métodoUpem migrações que não foram aplicadas. Nesse caso, o comando executa o métodoUpno arquivoMigrations/<time-stamp>_InitialCreate.cs, que cria o banco de dados.
O contexto dos dados RazorPagesMovieContext:
- Deriva de Microsoft.EntityFrameworkCore.DbContext.
- Especifica quais entidades são incluídas no modelo de dados.
- Coordena a funcionalidade EF Core, como Criar, Ler, Atualizar e Eliminar, para o modelo
Movie.
A classe RazorPagesMovieContext no arquivo gerado Data/RazorPagesMovieContext.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
}
}
O código anterior cria uma propriedade DbSet<Movie> para o conjunto de entidades. Na terminologia do Entity Framework, um conjunto de entidades normalmente corresponde a uma tabela de banco de dados. Uma entidade corresponde a uma linha na tabela.
O nome da cadeia de conexão é passado para o contexto ao chamar um método num objeto DbContextOptions. Para o desenvolvimento local, o sistema de configuração lê a cadeia de conexão do arquivo appsettings.json.
Testar a aplicação
Execute o aplicativo e anexe
/Moviesao URL no navegador (http://localhost:port/movies).Se você receber o seguinte erro:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Teste o link Criar Novo.
Note
Talvez não seja possível inserir vírgulas decimais no campo
Price. Para oferecer suporte a de validação do jQuery para localidades diferentes do inglês que usam uma vírgula (",") para um ponto decimal e para formatos de data não US-English, o aplicativo deve ser globalizado. Para obter instruções sobre globalização, consulte este problema do GitHub.Teste o Editar, Detalhese Excluir links.
O próximo tutorial explica os ficheiros criados por scaffolding.
Examinar o contexto registrado com a injeção de dependência
ASP.NET Core é construído com injeção de dependência. Serviços, como o contexto de banco de dados EF Core, são registrados com injeção de dependência durante a inicialização do aplicativo. Os componentes que requerem esses serviços (como Razor Pages) são fornecidos por meio de parâmetros do construtor. O código do construtor que obtém uma instância de contexto de banco de dados é mostrado posteriormente no tutorial.
A ferramenta de scaffolding criou automaticamente um contexto de base de dados e registou-o com o contentor de injeção de dependência. O seguinte código realçado é adicionado ao arquivo Program.cs pelo scaffolder:
- Estúdio Visual
- de código do Visual Studio
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapStaticAssets();
app.MapRazorPages();
app.Run();
Solução de problemas com o exemplo concluído
Se você encontrar um problema que não pode resolver, compare seu código com o projeto concluído. Ver ou descarregar o do projeto finalizado (como descarregar).
Próximos passos
Neste tutorial, as classes são adicionadas para gerenciar filmes em um banco de dados. As classes de modelo do aplicativo usam EF Core do Entity Framework Core () para trabalhar com o banco de dados. EF Core é um mapeador objeto-relacional (O/RM) que simplifica o acesso aos dados. Você escreve as classes de modelo primeiro e EF Core cria o banco de dados.
As classes de modelo são conhecidas como classes POCO (de "Plain-Old CLR Objects") porque não têm uma dependência de EF Core. Eles definem as propriedades dos dados armazenados no banco de dados.
Adicionar um modelo de dados
- Estúdio Visual
- de código do Visual Studio
No Gerenciador de Soluções , clique com o botão direito do mouse no projeto RazorPagesMovie>Adicionar>Nova Pasta. Nomeie a pasta
Models.Clique com o botão direito do rato na pasta
Models. Selecione Adicionar>classe. Dê o nome à classe Filme.Adicione as seguintes propriedades à classe
Movie:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models; public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } }
A classe Movie contém:
O campo
IDé exigido pelo banco de dados para a chave primária.Um [DataType] atributo que especifica o tipo de dados na propriedade
ReleaseDate. Com este atributo:- O usuário não é obrigado a inserir informações de hora no campo de data.
- Apenas a data é exibida, não as informações de hora.
O ponto de interrogação após
stringindica que a propriedade é anulável. Para obter mais informações, consulte Tipos de referência anuláveis.
DataAnnotations são abordados em um tutorial posterior.
Crie o projeto para verificar se não há erros de compilação.
Andaime o modelo do filme
Nesta seção, o modelo do filme é andaime. Ou seja, a ferramenta de andaime produz páginas para operações Criar, Ler, Atualizar e Excluir (CRUD) para o modelo de filme.
- Estúdio Visual
- de código do Visual Studio
Crie a pasta Pages/Movies:
- Clique com o botão direito do rato na pasta Páginas>Adicionar>Nova Pasta.
- Nomeie a pasta Filmes.
Clique com o botão direito do rato na pasta Pages/Movies>Adicionar>Novo Item Estruturado.
Na caixa de diálogo Adicionar Novo Andaime, selecione Razor Páginas usando o Entity Framework (CRUD)>Adicionar.
Complete a caixa de diálogo Adicionar Razor Páginas usando o Entity Framework (CRUD).
- No menu pendente da classe Model , selecione Filme (RazorPagesMovie.Models).
- Na classe de contexto Data, na linha, selecione o sinal + de adição (mais).
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
RazorPagesMovie.Data.RazorPagesMovieContexté gerado. - Na lista suspensa Provedor de banco de dados, selecione SQL Server.
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
- Selecione Adicionar.
O arquivo appsettings.json é atualizado com a cadeia de conexão usada para se conectar a um banco de dados local.
Warning
Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.
Arquivos criados e atualizados
O processo de andaime cria os seguintes ficheiros:
- Páginas/Filmes: Criar, Excluir, Detalhes, Editar e Indexar.
Data/RazorPagesMovieContext.cs
Os arquivos criados são explicados no próximo tutorial.
O processo de andaime adiciona o seguinte código realçado ao arquivo Program.cs:
- Estúdio Visual
- de código do Visual Studio
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
As alterações Program.cs são explicadas neste tutorial mais adiante.
Criar o esquema de banco de dados inicial usando o recurso de migração do EF
O recurso de migrações no Entity Framework Core fornece uma maneira de:
- Crie o esquema de banco de dados inicial.
- Atualize incrementalmente o esquema do banco de dados para mantê-lo sincronizado com o modelo de dados do aplicativo. Os dados existentes na base de dados são preservados.
- Estúdio Visual
- de código do Visual Studio
Nesta seção, a janela Package Manager Console (PMC) é usada para:
Adicione uma migração inicial.
Atualize o banco de dados com a migração inicial.
No menu Ferramentas de, selecione Gerenciador de Pacotes NuGet>Console do Gerenciador de Pacotes.
No PMC, digite o seguinte comando:
Add-Migration InitialCreateO comando
Add-Migrationgera código para criar o esquema de banco de dados inicial. O esquema é baseado no modelo especificado emDbContext. O argumentoInitialCreateé usado para nomear a migração. Qualquer nome pode ser usado, mas por convenção é selecionado um nome que descreve a migração.
O seguinte aviso é exibido, que é abordado em uma etapa posterior:
Nenhum tipo foi especificado para a coluna decimal 'Preço' no tipo de entidade 'Filme'. Isso fará com que os valores sejam truncados silenciosamente se não se ajustarem à precisão e escala padrão. Especifique explicitamente o tipo de coluna do servidor SQL que pode acomodar todos os valores usando 'HasColumnType()'.
No PMC, digite o seguinte comando:
Update-DatabaseO comando
Update-Databaseexecuta o métodoUpem migrações que não foram aplicadas. Nesse caso, o comando executa o métodoUpno arquivoMigrations/<time-stamp>_InitialCreate.cs, que cria o banco de dados.
O contexto dos dados RazorPagesMovieContext:
- Deriva de Microsoft.EntityFrameworkCore.DbContext.
- Especifica quais entidades são incluídas no modelo de dados.
- Coordena a funcionalidade EF Core, como Criar, Ler, Atualizar e Eliminar, para o modelo
Movie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
}
}
O código anterior cria uma propriedade DbSet<Movie> para o conjunto de entidades. Na terminologia do Entity Framework, um conjunto de entidades normalmente corresponde a uma tabela de banco de dados. Uma entidade corresponde a uma linha na tabela.
O nome da cadeia de conexão é passado para o contexto ao chamar um método num objeto DbContextOptions. Para o desenvolvimento local, o sistema de configuração lê a cadeia de conexão do arquivo appsettings.json.
Testar a aplicação
Execute o aplicativo e anexe
/Moviesao URL no navegador (http://localhost:port/movies).Se você receber o seguinte erro:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Teste o link Criar Novo.
Note
Talvez não seja possível inserir vírgulas decimais no campo
Price. Para oferecer suporte a de validação do jQuery para localidades diferentes do inglês que usam uma vírgula (",") para um ponto decimal e para formatos de data não US-English, o aplicativo deve ser globalizado. Para obter instruções sobre globalização, consulte este problema do GitHub.Teste o Editar, Detalhese Excluir links.
O próximo tutorial explica os ficheiros criados por scaffolding.
Examinar o contexto registrado com a injeção de dependência
ASP.NET Core é construído com injeção de dependência. Serviços, como o contexto de banco de dados EF Core, são registrados com injeção de dependência durante a inicialização do aplicativo. Os componentes que requerem esses serviços (como Razor Pages) são fornecidos por meio de parâmetros do construtor. O código do construtor que obtém uma instância de contexto de banco de dados é mostrado posteriormente no tutorial.
A ferramenta de scaffolding criou automaticamente um contexto de base de dados e registou-o com o contentor de injeção de dependência. O seguinte código realçado é adicionado ao arquivo Program.cs pelo scaffolder:
- Estúdio Visual
- de código do Visual Studio
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Solução de problemas com o exemplo concluído
Se você encontrar um problema que não pode resolver, compare seu código com o projeto concluído. Ver ou descarregar o do projeto finalizado (como descarregar).
Próximos passos
Neste tutorial, as classes são adicionadas para gerenciar filmes em um banco de dados. As classes de modelo do aplicativo usam EF Core do Entity Framework Core () para trabalhar com o banco de dados. EF Core é um mapeador objeto-relacional (O/RM) que simplifica o acesso aos dados. Você escreve as classes de modelo primeiro e EF Core cria o banco de dados.
As classes de modelo são conhecidas como classes POCO (de "Plain-Old CLR Objects") porque não têm uma dependência de EF Core. Eles definem as propriedades dos dados armazenados no banco de dados.
Adicionar um modelo de dados
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
No Gerenciador de Soluções , clique com o botão direito do mouse no projeto RazorPagesMovie>Adicionar>Nova Pasta. Nomeie a pasta
Models.Clique com o botão direito do rato na pasta
Models. Selecione Adicionar>classe. Dê o nome à classe Filme.Adicione as seguintes propriedades à classe
Movie:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models; public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } }
A classe Movie contém:
O campo
IDé exigido pelo banco de dados para a chave primária.Um [DataType] atributo que especifica o tipo de dados na propriedade
ReleaseDate. Com este atributo:- O usuário não é obrigado a inserir informações de hora no campo de data.
- Apenas a data é exibida, não as informações de hora.
O ponto de interrogação após
stringindica que a propriedade é anulável. Para obter mais informações, consulte Tipos de referência anuláveis.
DataAnnotations são abordados em um tutorial posterior.
Crie o projeto para verificar se não há erros de compilação.
Andaime o modelo do filme
Nesta seção, o modelo do filme é andaime. Ou seja, a ferramenta de andaime produz páginas para operações Criar, Ler, Atualizar e Excluir (CRUD) para o modelo de filme.
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
Crie a pasta Pages/Movies:
- Clique com o botão direito do rato na pasta Páginas>Adicionar>Nova Pasta.
- Nomeie a pasta Filmes.
Clique com o botão direito do rato na pasta Pages/Movies>Adicionar>Novo Item Estruturado.
Na caixa de diálogo Adicionar Novo Andaime, selecione Razor Páginas usando o Entity Framework (CRUD)>Adicionar.
Complete a caixa de diálogo Adicionar Razor Páginas usando o Entity Framework (CRUD).
- No menu pendente da classe Model , selecione Filme (RazorPagesMovie.Models).
- Na classe de contexto Data, na linha, selecione o sinal + de adição (mais).
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
RazorPagesMovie.Data.RazorPagesMovieContexté gerado. - Na lista suspensa Provedor de banco de dados, selecione SQL Server.
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
- Selecione Adicionar.
O arquivo appsettings.json é atualizado com a cadeia de conexão usada para se conectar a um banco de dados local.
Warning
Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.
Arquivos criados e atualizados
O processo de andaime cria os seguintes ficheiros:
- Páginas/Filmes: Criar, Excluir, Detalhes, Editar e Indexar.
Data/RazorPagesMovieContext.cs
Os arquivos criados são explicados no próximo tutorial.
O processo de andaime adiciona o seguinte código realçado ao arquivo Program.cs:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
As alterações Program.cs são explicadas neste tutorial mais adiante.
Criar o esquema de banco de dados inicial usando o recurso de migração do EF
O recurso de migrações no Entity Framework Core fornece uma maneira de:
- Crie o esquema de banco de dados inicial.
- Atualize incrementalmente o esquema do banco de dados para mantê-lo sincronizado com o modelo de dados do aplicativo. Os dados existentes na base de dados são preservados.
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
Nesta seção, a janela Package Manager Console (PMC) é usada para:
- Adicione uma migração inicial.
- Atualize o banco de dados com a migração inicial.
No menu Ferramentas de, selecione Gerenciador de Pacotes NuGet>Console do Gerenciador de Pacotes.
No PMC, digite os seguintes comandos:
Add-Migration InitialCreate Update-Database
O comando
Add-Migrationgera código para criar o esquema de banco de dados inicial. O esquema é baseado no modelo especificado emDbContext. O argumentoInitialCreateé usado para nomear a migração. Qualquer nome pode ser usado, mas por convenção é selecionado um nome que descreve a migração.O comando
Update-Databaseexecuta o métodoUpem migrações que não foram aplicadas. Nesse caso, o comando executa o métodoUpno arquivoMigrations/<time-stamp>_InitialCreate.cs, que cria o banco de dados.
O seguinte aviso é exibido, que é abordado em uma etapa posterior:
Nenhum tipo foi especificado para a coluna decimal 'Preço' no tipo de entidade 'Filme'. Isso fará com que os valores sejam truncados silenciosamente se não se ajustarem à precisão e escala padrão. Especifique explicitamente o tipo de coluna do servidor SQL que pode acomodar todos os valores usando 'HasColumnType()'.
O contexto dos dados RazorPagesMovieContext:
- Deriva de Microsoft.EntityFrameworkCore.DbContext.
- Especifica quais entidades são incluídas no modelo de dados.
- Coordena a funcionalidade EF Core, como Criar, Ler, Atualizar e Eliminar, para o modelo
Movie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; } = default!;
}
}
O código anterior cria uma propriedade DbSet<Movie> para o conjunto de entidades. Na terminologia do Entity Framework, um conjunto de entidades normalmente corresponde a uma tabela de banco de dados. Uma entidade corresponde a uma linha na tabela.
O nome da cadeia de conexão é passado para o contexto ao chamar um método num objeto DbContextOptions. Para o desenvolvimento local, o sistema de configuração lê a cadeia de conexão do arquivo appsettings.json.
Testar a aplicação
Execute o aplicativo e anexe
/Moviesao URL no navegador (http://localhost:port/movies).Se você receber o seguinte erro:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Teste o link Criar Novo.
Note
Talvez não seja possível inserir vírgulas decimais no campo
Price. Para oferecer suporte a de validação do jQuery para localidades diferentes do inglês que usam uma vírgula (",") para um ponto decimal e para formatos de data não US-English, o aplicativo deve ser globalizado. Para obter instruções sobre globalização, consulte este problema do GitHub.Teste o Editar, Detalhese Excluir links.
O próximo tutorial explica os ficheiros criados por scaffolding.
Examinar o contexto registrado com a injeção de dependência
ASP.NET Core é construído com injeção de dependência. Serviços, como o contexto de banco de dados EF Core, são registrados com injeção de dependência durante a inicialização do aplicativo. Os componentes que requerem esses serviços (como Razor Pages) são fornecidos por meio de parâmetros do construtor. O código do construtor que obtém uma instância de contexto de banco de dados é mostrado posteriormente no tutorial.
A ferramenta de scaffolding criou automaticamente um contexto de base de dados e registou-o com o contentor de injeção de dependência. O seguinte código realçado é adicionado ao arquivo Program.cs pelo scaffolder:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Solução de problemas com o exemplo concluído
Se você encontrar um problema que não pode resolver, compare seu código com o projeto concluído. Ver ou descarregar o do projeto finalizado (como descarregar).
Próximos passos
Neste tutorial, as classes são adicionadas para gerenciar filmes em um banco de dados. As classes de modelo do aplicativo usam EF Core do Entity Framework Core () para trabalhar com o banco de dados. EF Core é um mapeador objeto-relacional (O/RM) que simplifica o acesso aos dados. Você escreve as classes de modelo primeiro e EF Core cria o banco de dados.
As classes de modelo são conhecidas como classes POCO (de "Plain-Old CLR Objects") porque não têm uma dependência de EF Core. Eles definem as propriedades dos dados armazenados no banco de dados.
Adicionar um modelo de dados
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
No Gerenciador de Soluções , clique com o botão direito do mouse no projeto RazorPagesMovie>Adicionar>Nova Pasta. Nomeie a pasta
Models.Clique com o botão direito do rato na pasta
Models. Selecione Adicionar>classe. Dê o nome à classe Filme.Adicione as seguintes propriedades à classe
Movie:using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; } = string.Empty; [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string Genre { get; set; } = string.Empty; public decimal Price { get; set; } } }
A classe Movie contém:
O campo
IDé exigido pelo banco de dados para a chave primária.Um [DataType] atributo que especifica o tipo de dados na propriedade
ReleaseDate. Com este atributo:- O usuário não é obrigado a inserir informações de hora no campo de data.
- Apenas a data é exibida, não as informações de hora.
DataAnnotations são abordados em um tutorial posterior.
Crie o projeto para verificar se não há erros de compilação.
Andaime o modelo do filme
Nesta seção, o modelo do filme é andaime. Ou seja, a ferramenta de andaime produz páginas para operações Criar, Ler, Atualizar e Excluir (CRUD) para o modelo de filme.
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
Adicione o pacote NuGet
Microsoft.EntityFrameworkCore.Design, que é necessário para a ferramenta de andaime.- No menu Ferramentas, selecione Gestor de Pacotes NuGet>Gerir Pacotes NuGet para a Solução

- Selecione a guia Procurar.
- Digite
Microsoft.EntityFrameworkCore.Designe selecione-o na lista. - Verifique Project e, em seguida, selecione Instalar
- Selecione Aceito na caixa de diálogo de aceitação de licença.
pt-PT:

- No menu Ferramentas, selecione Gestor de Pacotes NuGet>Gerir Pacotes NuGet para a Solução
Crie a pasta Pages/Movies:
- Clique com o botão direito do rato na pasta Páginas>Adicionar>Nova Pasta.
- Nomeie a pasta Filmes.
Clique com o botão direito do rato na pasta Pages/Movies>Adicionar>Novo Item Estruturado.
Na caixa de diálogo Adicionar Novo Andaime, selecione Razor Páginas usando o Entity Framework (CRUD)>Adicionar.
Complete a caixa de diálogo Adicionar Razor Páginas usando o Entity Framework (CRUD).
- No menu pendente da classe Model , selecione Filme (RazorPagesMovie.Models).
- Na classe de contexto Data, na linha, selecione o sinal + de adição (mais).
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
RazorPagesMovie.Data.RazorPagesMovieContexté gerado.
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
- Selecione Adicionar.
Se você receber uma mensagem de erro informando que precisa instalar o pacote
Microsoft.EntityFrameworkCore.SqlServer, repita as etapas começando com Adicionar>Novo Item Andaime.
O arquivo appsettings.json é atualizado com a cadeia de conexão usada para se conectar a um banco de dados local.
Warning
Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.
Arquivos criados e atualizados
O processo de andaime cria os seguintes ficheiros:
- Páginas/Filmes: Criar, Excluir, Detalhes, Editar e Indexar.
Data/RazorPagesMovieContext.cs
Os arquivos criados são explicados no próximo tutorial.
O processo de andaime adiciona o seguinte código realçado ao arquivo Program.cs:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
As alterações Program.cs são explicadas neste tutorial mais adiante.
Criar o esquema de banco de dados inicial usando o recurso de migração do EF
O recurso de migrações no Entity Framework Core fornece uma maneira de:
- Crie o esquema de banco de dados inicial.
- Atualize incrementalmente o esquema do banco de dados para mantê-lo sincronizado com o modelo de dados do aplicativo. Os dados existentes na base de dados são preservados.
Nesta seção, a janela Package Manager Console (PMC) é usada para:
- Adicione uma migração inicial.
- Atualize o banco de dados com a migração inicial.
No menu Ferramentas de, selecione Gerenciador de Pacotes NuGet>Console do Gerenciador de Pacotes.
No PMC, digite os seguintes comandos:
Add-Migration InitialCreate Update-Database
Os comandos anteriores são instalados as ferramentas do Entity Framework Core e executam o comando migrations para gerar o código que cria o esquema de banco de dados inicial.
O seguinte aviso é exibido, que é abordado em uma etapa posterior:
Nenhum tipo foi especificado para a coluna decimal 'Preço' no tipo de entidade 'Filme'. Isso fará com que os valores sejam truncados silenciosamente se não se ajustarem à precisão e escala padrão. Especifique explicitamente o tipo de coluna do servidor SQL que pode acomodar todos os valores usando 'HasColumnType()'.
O comando migrations gera código para criar o esquema de banco de dados inicial. O esquema é baseado no modelo especificado em DbContext. O argumento InitialCreate é usado para nomear as migrações. Qualquer nome pode ser usado, mas por convenção é selecionado um nome que descreve a migração.
O comando update executa o método Up em migrações que não foram aplicadas. Nesse caso, update executa o método Up no arquivo Migrations/<time-stamp>_InitialCreate.cs, que cria o banco de dados.
Examinar o contexto registrado com a injeção de dependência
ASP.NET Core é construído com injeção de dependência. Serviços, como o contexto de banco de dados EF Core, são registrados com injeção de dependência durante a inicialização do aplicativo. Os componentes que requerem esses serviços (como Razor Pages) são fornecidos por meio de parâmetros do construtor. O código do construtor que obtém uma instância de contexto de banco de dados é mostrado posteriormente no tutorial.
A ferramenta de scaffolding criou automaticamente um contexto de base de dados e registou-o com o contentor de injeção de dependência. O seguinte código realçado é adicionado ao arquivo Program.cs pelo scaffolder:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found.")));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
O contexto dos dados RazorPagesMovieContext:
- Deriva de Microsoft.EntityFrameworkCore.DbContext.
- Especifica quais entidades são incluídas no modelo de dados.
- Coordena a funcionalidade EF Core, como Criar, Ler, Atualizar e Eliminar, para o modelo
Movie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie>? Movie { get; set; }
}
}
O código anterior cria uma propriedade DbSet<Movie> para o conjunto de entidades. Na terminologia do Entity Framework, um conjunto de entidades normalmente corresponde a uma tabela de banco de dados. Uma entidade corresponde a uma linha na tabela.
O nome da cadeia de conexão é passado para o contexto ao chamar um método num objeto DbContextOptions. Para o desenvolvimento local, o sistema de configuração lê a cadeia de conexão do arquivo appsettings.json.
Testar a aplicação
Execute o aplicativo e anexe
/Moviesao URL no navegador (http://localhost:port/movies).Se você receber o seguinte erro:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Teste o link Criar Novo.
Note
Talvez não seja possível inserir vírgulas decimais no campo
Price. Para oferecer suporte a de validação do jQuery para localidades diferentes do inglês que usam uma vírgula (",") para um ponto decimal e para formatos de data não US-English, o aplicativo deve ser globalizado. Para obter instruções sobre globalização, consulte este problema do GitHub.Teste o Editar, Detalhese Excluir links.
O próximo tutorial explica os ficheiros criados por scaffolding.
Solução de problemas com o exemplo concluído
Se você encontrar um problema que não pode resolver, compare seu código com o projeto concluído. Ver ou descarregar o do projeto finalizado (como descarregar).
Próximos passos
Nesta seção, as classes são adicionadas para gerenciar filmes em um banco de dados. As classes de modelo do aplicativo usam EF Core do Entity Framework Core () para trabalhar com o banco de dados. EF Core é um mapeador objeto-relacional (O/RM) que simplifica o acesso aos dados. Você escreve as classes de modelo primeiro e EF Core cria o banco de dados.
As classes de modelo são conhecidas como classes POCO (de "Plain-Old CLR Objects") porque não têm uma dependência de EF Core. Eles definem as propriedades dos dados armazenados no banco de dados.
Ver ou descarregar código de exemplo (como descarregar).
Adicionar um modelo de dados
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
No Gerenciador de Soluções , clique com o botão direito do mouse no projeto RazorPagesMovie>Adicionar>Nova Pasta. Nomeie a pasta
Models.Clique com o botão direito do rato na pasta
Models. Selecione Adicionar>classe. Dê o nome à classe Filme.Adicione as seguintes propriedades à classe
Movie:using System; using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } } }
A classe Movie contém:
O campo
IDé exigido pelo banco de dados para a chave primária.[DataType(DataType.Date)]: O atributo [DataType] especifica o tipo dos dados (Date). Com este atributo:- O usuário não é obrigado a inserir informações de hora no campo de data.
- Apenas a data é exibida, não as informações de hora.
DataAnnotations são abordados em um tutorial posterior.
Crie o projeto para verificar se não há erros de compilação.
Andaime o modelo do filme
Nesta seção, o modelo do filme é andaime. Ou seja, a ferramenta de andaime produz páginas para operações Criar, Ler, Atualizar e Excluir (CRUD) para o modelo de filme.
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
Crie uma pasta Pages/Movies:
- Clique com o botão direito do rato na pasta Páginas>Adicionar>Nova Pasta.
- Nomeie a pasta Filmes.
Clique com o botão direito do rato na pasta Pages/Movies>Adicionar>Novo Item Estruturado.
Na caixa de diálogo Adicionar Scaffold, selecione Razor Páginas usando o Entity Framework (CRUD)>Adicionar.
Complete a caixa de diálogo Adicionar Razor Páginas usando o Entity Framework (CRUD).
- No menu pendente da classe Model , selecione Filme (RazorPagesMovie.Models).
- Na classe de contexto Data, na linha, selecione o sinal + de adição (mais).
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
RazorPagesMovie.Data.RazorPagesMovieContexté gerado.
- Na caixa de diálogo Adicionar Contexto de Dados, o nome da classe
- Selecione Adicionar.
O arquivo appsettings.json é atualizado com a cadeia de conexão usada para se conectar a um banco de dados local.
Warning
Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.
Arquivos criados e atualizados
O processo de andaime cria os seguintes ficheiros:
- Páginas/Filmes: Criar, Excluir, Detalhes, Editar e Indexar.
Data/RazorPagesMovieContext.cs
Arquivos atualizados
Startup.cs
Os arquivos criados e atualizados são explicados na próxima seção.
Criar o esquema de banco de dados inicial usando o recurso de migração do EF
O recurso de migrações no Entity Framework Core fornece uma maneira de:
- Crie o esquema de banco de dados inicial.
- Atualize incrementalmente o esquema do banco de dados para mantê-lo sincronizado com o modelo de dados do aplicativo. Os dados existentes na base de dados são preservados.
Nesta seção, a janela Package Manager Console (PMC) é usada para:
- Adicione uma migração inicial.
- Atualize o banco de dados com a migração inicial.
No menu Ferramentas de, selecione Gerenciador de Pacotes NuGet>Console do Gerenciador de Pacotes.
No PMC, digite os seguintes comandos:
Add-Migration InitialCreate Update-Database
Para o SQL Server, os comandos anteriores geram o seguinte aviso: "Nenhum tipo foi especificado para a coluna decimal 'Preço' no tipo de entidade 'Filme'. Isso fará com que os valores sejam truncados silenciosamente se não se ajustarem à precisão e escala padrão. Especifique explicitamente o tipo de coluna do servidor SQL que pode acomodar todos os valores usando 'HasColumnType()'."
Ignore o aviso, pois ele será abordado em uma etapa posterior.
O comando migrations gera código para criar o esquema de banco de dados inicial. O esquema é baseado no modelo especificado em DbContext. O argumento InitialCreate é usado para nomear as migrações. Qualquer nome pode ser usado, mas por convenção é selecionado um nome que descreve a migração.
O comando update executa o método Up em migrações que não foram aplicadas. Nesse caso, update executa o método Up no arquivo Migrations/<time-stamp>_InitialCreate.cs, que cria o banco de dados.
Examinar o contexto registrado com a injeção de dependência
ASP.NET Core é construído com injeção de dependência. Serviços, como o contexto de banco de dados EF Core, são registrados com injeção de dependência durante a inicialização do aplicativo. Os componentes que requerem esses serviços (como Razor Pages) são fornecidos por meio de parâmetros do construtor. O código do construtor que obtém uma instância de contexto de banco de dados é mostrado posteriormente no tutorial.
A ferramenta de scaffolding criou automaticamente um contexto de base de dados e registou-o com o contentor de injeção de dependência.
Examine o método Startup.ConfigureServices. A linha destacada foi adicionada pelo montador de andaimes:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}
O RazorPagesMovieContext coordena a funcionalidade EF Core, como Criar, Ler, Atualizar e Eliminar, para o modelo Movie. O contexto de dados (RazorPagesMovieContext) é derivado de Microsoft.EntityFrameworkCore.DbContext. O contexto de dados especifica quais entidades são incluídas no modelo de dados.
using Microsoft.EntityFrameworkCore;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (
DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
}
}
O código anterior cria uma propriedade DbSet<Movie> para o conjunto de entidades. Na terminologia do Entity Framework, um conjunto de entidades normalmente corresponde a uma tabela de banco de dados. Uma entidade corresponde a uma linha na tabela.
O nome da cadeia de conexão é passado para o contexto ao chamar um método num objeto DbContextOptions. Para o desenvolvimento local, o sistema de configuração lê a cadeia de conexão do arquivo appsettings.json.
Testar a aplicação
Execute o aplicativo e anexe
/Moviesao URL no navegador (http://localhost:port/movies).Se você receber o seguinte erro:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Teste o link Criar.
Note
Talvez não seja possível inserir vírgulas decimais no campo
Price. Para oferecer suporte a de validação do jQuery para localidades diferentes do inglês que usam uma vírgula (",") para um ponto decimal e para formatos de data não US-English, o aplicativo deve ser globalizado. Para obter instruções sobre globalização, consulte este problema do GitHub.Teste o Editar, Detalhese Excluir links.
Registo de SQL do Entity Framework Core
A configuração de registo geralmente é fornecida pela seção Logging de arquivos appsettings.{Environment}.json. Para registrar instruções SQL, adicione "Microsoft.EntityFrameworkCore.Database.Command": "Information" ao arquivo appsettings.Development.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDB-2;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
}
},
"AllowedHosts": "*"
}
Com o JSON anterior, as instruções SQL são exibidas na linha de comando e na janela de saída do Visual Studio.
Para obter mais informações, consulte Fazendo login no .NET e no ASP.NET Core e este problema do GitHub.
O próximo tutorial explica os ficheiros criados por scaffolding.
Próximos passos
Nesta secção, adicionam-se classes para a gestão de filmes. As classes de modelo do aplicativo usam EF Core do Entity Framework Core () para trabalhar com o banco de dados. EF Core é um mapeador objeto-relacional (O/RM) que simplifica o acesso aos dados.
As classes de modelo são chamadas de classes POCO (de "objetos CLR simples") porque não têm nenhuma dependência de EF Core. Eles definem as propriedades dos dados armazenados no banco de dados.
Ver ou descarregar código de exemplo (como descarregar).
Warning
Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.
Adicionar um modelo de dados
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
Clique com o botão direito do mouse no projeto RazorPagesMovie>Adicionar>Nova Pasta. Nomeie a pasta Models.
Clique com o botão direito do rato na pasta Models. Selecione Adicionar>classe. Dê o nome à classe Filme.
Adicione as seguintes propriedades à classe Movie:
using System;
using System.ComponentModel.DataAnnotations;
namespace RazorPagesMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
}
A classe Movie contém:
O campo
IDé exigido pelo banco de dados para a chave primária.[DataType(DataType.Date)]: O atributo DataType especifica o tipo de dados (Date). Com este atributo:- O usuário não é obrigado a inserir informações de hora no campo de data.
- Apenas a data é exibida, não as informações de hora.
DataAnnotations são abordados em um tutorial posterior.
DataAnnotations são abordados em um tutorial posterior.
Crie o projeto para verificar se não há erros de compilação.
Andaime o modelo do filme
Nesta seção, o modelo do filme é andaime. Ou seja, a ferramenta de andaime produz páginas para operações Criar, Ler, Atualizar e Excluir (CRUD) para o modelo de filme.
- Estúdio Visual
- de código do Visual Studio
- Visual Studio para Mac
Crie uma pasta Pages/Movies:
- Clique com o botão direito do rato na pasta Páginas>Adicionar>Nova Pasta.
- Nomeie a pasta Filmes.
Clique com o botão direito do rato na pasta Pages/Movies>Adicionar>Novo Item Estruturado.
Na caixa de diálogo Adicionar Scaffold, selecione Razor Páginas usando o Entity Framework (CRUD)>Adicionar.
Complete a caixa de diálogo Adicionar Razor Páginas usando o Entity Framework (CRUD).
- No menu pendente da classe Model , selecione Filme (RazorPagesMovie.Models).
- Na linha da classe de contexto Dados, selecione o sinal de + (mais) e altere o nome gerado de RazorPagesMovie.
Models.RazorPagesMovieContext para RazorPagesMovie.Dados..RazorPagesMovieContext. Esta alteração não é necessária. Ele cria a classe de contexto do banco de dados com o namespace correto. - Selecione Adicionar.
O arquivo appsettings.json é atualizado com a cadeia de conexão usada para se conectar a um banco de dados local.
Ficheiros criados
- Estúdio Visual
- Visual Studio para Mac
- de código do Visual Studio
O processo de andaime cria e atualiza os seguintes ficheiros:
- Páginas/Filmes: Criar, Excluir, Detalhes, Editar e Indexar.
Data/RazorPagesMovieContext.cs
Updated
Startup.cs
Os arquivos criados e atualizados são explicados na próxima seção.
Migração inicial
Nesta seção, o Console do Gerenciador de Pacotes (PMC) é usado para:
- Adicione uma migração inicial.
- Atualize o banco de dados com a migração inicial.
No menu Ferramentas de, selecione Gerenciador de Pacotes NuGet>Console do Gerenciador de Pacotes.
No PMC, digite os seguintes comandos:
Add-Migration InitialCreate
Update-Database
Os comandos anteriores geram o seguinte aviso: "Nenhum tipo foi especificado para a coluna decimal 'Preço' no tipo de entidade 'Filme'. Isso fará com que os valores sejam truncados silenciosamente se não se ajustarem à precisão e escala padrão. Especifique explicitamente o tipo de coluna do servidor SQL que pode acomodar todos os valores usando 'HasColumnType()'."
Ignore o aviso, pois ele será abordado em uma etapa posterior.
O comando migrations gera código para criar o esquema de banco de dados inicial. O esquema é baseado no modelo especificado em DbContext. O argumento InitialCreate é usado para nomear as migrações. Qualquer nome pode ser usado, mas por convenção é selecionado um nome que descreve a migração.
O comando update executa o método Up em migrações que não foram aplicadas. Nesse caso, update executa o método Up em Migrations/<time-stamp>_InitialCreate.cs arquivo, que cria o banco de dados.
Examinar o contexto registrado com a injeção de dependência
ASP.NET Core é construído com injeção de dependência. Serviços, como o contexto de banco de dados EF Core, são registrados com injeção de dependência durante a inicialização do aplicativo. Os componentes que requerem esses serviços, como Razor Pages, são fornecidos por meio de parâmetros do construtor. O código do construtor que obtém uma instância de contexto de banco de dados é mostrado posteriormente no tutorial.
A ferramenta de scaffolding criou automaticamente um contexto de base de dados e registou-o com o contentor de injeção de dependência.
Examine o método Startup.ConfigureServices. A linha destacada foi adicionada pelo montador de andaimes:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}
O RazorPagesMovieContext coordena a funcionalidade EF Core, como Criar, Ler, Atualizar e Eliminar, para o modelo Movie. O contexto de dados (RazorPagesMovieContext) é derivado de Microsoft.EntityFrameworkCore.DbContext. O contexto de dados especifica quais entidades são incluídas no modelo de dados.
using Microsoft.EntityFrameworkCore;
namespace RazorPagesMovie.Data
{
public class RazorPagesMovieContext : DbContext
{
public RazorPagesMovieContext (
DbContextOptions<RazorPagesMovieContext> options)
: base(options)
{
}
public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
}
}
O código anterior cria uma propriedade DbSet<Movie> para o conjunto de entidades. Na terminologia do Entity Framework, um conjunto de entidades normalmente corresponde a uma tabela de banco de dados. Uma entidade corresponde a uma linha na tabela.
O nome da cadeia de conexão é passado para o contexto ao chamar um método num objeto DbContextOptions. Para o desenvolvimento local, o sistema de configuração lê a cadeia de conexão do arquivo appsettings.json.
Testar a aplicação
- Execute o aplicativo e anexe
/Moviesao URL no navegador (http://localhost:port/movies).
Se você receber o erro:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.
Você perdeu a etapa migrações .
Teste o link Criar.
Note
Talvez não seja possível inserir vírgulas decimais no campo
Price. Para oferecer suporte a de validação do jQuery para localidades diferentes do inglês que usam uma vírgula (",") para um ponto decimal e para formatos de data não US-English, o aplicativo deve ser globalizado. Para obter instruções sobre globalização, consulte este problema do GitHub.Teste o Editar, Detalhese Excluir links.
O próximo tutorial explica os ficheiros criados por scaffolding.