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.
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.
Advertência
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.
Por Rick Anderson e Jon P Smith.
Introdução
Esta parte da série de tutoriais foca-se em trabalhar com uma base de dados SQL na sua aplicação ASP.NET Core MVC.
Vai aprender como:
- Registe e configure o contexto da base de dados Entity Framework Core para a sua aplicação ASP.NET Core MVC.
- Trabalhar com cadeias de ligação a bases de dados para desenvolvimento local.
- Use o SQL Server Express LocalDB para desenvolvimento e examine a sua base de dados e dados usando o SQL Server Object Explorer.
- Preencha a sua base de dados com dados de exemplo iniciais.
Pré-requisito
Este tutorial utiliza uma base de dados que configurou no passo anterior: Parte 4, adicionar um modelo a uma aplicação Core MVC ASP.NET.
Trabalhar com o contexto da base de dados
O objeto MvcMovieContext lida com a tarefa de se conectar à base de dados e mapear objetos Movie para registos de base de dados. O contexto da base de dados está registado no container Dependency Injection no ficheiro Program.cs.
- Estúdio Visual
- de código do Visual Studio
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
O sistema ASP.NET Core Configuration lê a chave ConnectionString. Para desenvolvimento local, ele obtém a cadeia de conexão do arquivo appsettings.json:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Advertência
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.
- Estúdio Visual
- de código do Visual Studio
SQL Server Express LocalDB (versão local do SQL Server Express)
LocalDB:
- É uma versão leve do Mecanismo de Banco de Dados do SQL Server Express, instalado por padrão com o Visual Studio.
- Inicia sob demanda usando uma cadeia de conexão.
- Está direcionado para o desenvolvimento de programas. Ele é executado no modo de usuário, portanto, não há nenhuma configuração complexa.
- Por padrão, cria arquivos .mdf no diretório C:/Users/{user}.
Examinar o banco de dados
No menu Exibir, abra o Pesquisador de Objetos do SQL Server (SSOX).
Clique com o botão direito do rato na tabela Movie (dbo.Movie) > View Designer
Observe o ícone de chave ao lado de ID. Por padrão, o EF cria uma propriedade chamada ID chave primária.
Clique com o botão direito do rato na tabela Movie> Ver Dados
Semear o banco de dados
Crie uma nova classe chamada SeedData na pasta Models. Substitua o código gerado pelo seguinte:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Se houver algum filme no banco de dados, o inicializador de semente retornará e nenhum filme será adicionado.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Adicionar o inicializador de semente
- Estúdio Visual
- de código do Visual Studio
Substitua o conteúdo do Program.cs pelo código a seguir. O novo código é destacado.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Exclua todos os registros no banco de dados. Você pode fazer isso com os links de exclusão no navegador ou do SSOX.
Teste o aplicativo. Força o aplicativo a inicializar, chamando o código no arquivo Program.cs, para que o método seed seja executado. Para forçar a inicialização, feche a janela do prompt de comando que o Visual Studio abriu e reinicie pressionando Ctrl+F5.
A aplicação mostra os dados pré-definidos.
Introdução
Esta parte da série de tutoriais foca-se em trabalhar com uma base de dados SQL na sua aplicação ASP.NET Core MVC.
Vai aprender como:
- Registe e configure o contexto da base de dados Entity Framework Core para a sua aplicação ASP.NET Core MVC.
- Trabalhar com cadeias de ligação a bases de dados para desenvolvimento local.
- Use o SQL Server Express LocalDB para desenvolvimento e examine a sua base de dados e dados usando o SQL Server Object Explorer.
- Preencha a sua base de dados com dados de amostra iniciais.
Pré-requisito
Este tutorial utiliza uma base de dados que configurou no passo anterior: Parte 4, adicionar um modelo a uma aplicação Core MVC ASP.NET.
Trabalhar com o contexto da base de dados
O objeto MvcMovieContext lida com a tarefa de se conectar à base de dados e mapear objetos Movie para registos de base de dados. O contexto da base de dados está registado no container Dependency Injection no ficheiro Program.cs.
- Estúdio Visual
- de código do Visual Studio
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
O sistema ASP.NET Core Configuration lê a chave ConnectionString. Para desenvolvimento local, ele obtém a cadeia de conexão do arquivo appsettings.json:
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Advertência
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.
- Estúdio Visual
- de código do Visual Studio
SQL Server Express LocalDB (versão local do SQL Server Express)
LocalDB:
- É uma versão leve do Mecanismo de Banco de Dados do SQL Server Express, instalado por padrão com o Visual Studio.
- Inicia sob demanda usando uma cadeia de conexão.
- Está direcionado para o desenvolvimento de programas. Ele é executado no modo de usuário, portanto, não há nenhuma configuração complexa.
- Por padrão, cria arquivos .mdf no diretório C:/Users/{user}.
Examinar o banco de dados
No menu Exibir, abra o Pesquisador de Objetos do SQL Server (SSOX).
Clique com o botão direito do rato na tabela Movie (dbo.Movie) > View Designer
Observe o ícone de chave ao lado de ID. Por padrão, o EF cria uma propriedade chamada ID chave primária.
Clique com o botão direito do rato na tabela Movie> Ver Dados
Semear o banco de dados
Crie uma nova classe chamada SeedData na pasta Models. Substitua o código gerado pelo seguinte:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Se houver algum filme no banco de dados, o inicializador de semente retornará e nenhum filme será adicionado.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Adicionar o inicializador de semente
- Estúdio Visual
- de código do Visual Studio
Substitua o conteúdo do Program.cs pelo código a seguir. O novo código é destacado.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Exclua todos os registros no banco de dados. Você pode fazer isso com os links de exclusão no navegador ou do SSOX.
Teste o aplicativo. Força o aplicativo a inicializar, chamando o código no arquivo Program.cs, para que o método seed seja executado. Para forçar a inicialização, feche a janela do prompt de comando que o Visual Studio abriu e reinicie pressionando Ctrl+F5.
A aplicação mostra os dados pré-definidos.
Introdução
Esta parte da série de tutoriais foca-se em trabalhar com uma base de dados SQL na sua aplicação ASP.NET Core MVC.
Vai aprender como:
- Registe e configure o contexto da base de dados Entity Framework Core para a sua aplicação ASP.NET Core MVC.
- Trabalhar com cadeias de ligação a bases de dados para desenvolvimento local.
- Use o SQL Server Express LocalDB para desenvolvimento e examine a sua base de dados e dados usando o SQL Server Object Explorer.
- Inicialize a sua base de dados com dados de exemplo iniciais.
Pré-requisito
Este tutorial utiliza uma base de dados que configurou no passo anterior: Parte 4, adicionar um modelo a uma aplicação Core MVC ASP.NET.
Trabalhar com o contexto da base de dados
O objeto MvcMovieContext lida com a tarefa de se conectar à base de dados e mapear objetos Movie para registos de base de dados. O contexto da base de dados está registado no container Dependency Injection no ficheiro Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
O sistema ASP.NET Core Configuration lê a chave ConnectionString. Para desenvolvimento local, ele obtém a cadeia de conexão do arquivo appsettings.json:
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Advertência
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.
SQL Server Express LocalDB (versão local do SQL Server Express)
LocalDB:
- É uma versão leve do Mecanismo de Banco de Dados do SQL Server Express, instalado por padrão com o Visual Studio.
- Inicia sob demanda usando uma cadeia de conexão.
- Está direcionado para o desenvolvimento de programas. Ele é executado no modo de usuário, portanto, não há nenhuma configuração complexa.
- Por padrão, cria arquivos .mdf no diretório C:/Users/{user}.
Examinar o banco de dados
No menu Exibir, abra o Pesquisador de Objetos do SQL Server (SSOX).
Clique com o botão direito do rato na tabela Movie (dbo.Movie) > View Designer
Observe o ícone de chave ao lado de ID. Por padrão, o EF cria uma propriedade chamada ID chave primária.
Clique com o botão direito do rato na tabela Movie> Ver Dados
Semear o banco de dados
Crie uma nova classe chamada SeedData na pasta Models. Substitua o código gerado pelo seguinte:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Se houver algum filme no banco de dados, o inicializador de semente retornará e nenhum filme será adicionado.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<um nome=snippet_"si">
Adicionar o inicializador de semente
Substitua o conteúdo do Program.cs pelo código a seguir. O novo código é destacado.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Exclua todos os registros no banco de dados. Você pode fazer isso com os links de exclusão no navegador ou do SSOX.
Teste o aplicativo. Força o aplicativo a inicializar, chamando o código no arquivo Program.cs, para que o método seed seja executado. Para forçar a inicialização, feche a janela do prompt de comando que o Visual Studio abriu e reinicie pressionando Ctrl+F5.
A aplicação mostra os dados pré-definidos.
Introdução
Esta parte da série de tutoriais foca-se em trabalhar com uma base de dados SQL na sua aplicação ASP.NET Core MVC.
Vai aprender como:
- Registe e configure o contexto da base de dados Entity Framework Core para a sua aplicação ASP.NET Core MVC.
- Trabalhar com cadeias de ligação a bases de dados para desenvolvimento local.
- Use o SQL Server Express LocalDB para desenvolvimento e examine a sua base de dados e dados usando o SQL Server Object Explorer.
- Preencha a sua base de dados com dados de exemplo iniciais.
Pré-requisito
Este tutorial utiliza uma base de dados que configurou no passo anterior: Parte 4, adicionar um modelo a uma aplicação Core MVC ASP.NET.
Trabalhar com o contexto da base de dados
O objeto MvcMovieContext lida com a tarefa de se conectar à base de dados e mapear objetos Movie para registos de base de dados. O contexto da base de dados está registado no container Dependency Injection no ficheiro Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
O sistema ASP.NET Core Configuration lê a chave ConnectionString. Para desenvolvimento local, ele obtém a cadeia de conexão do arquivo appsettings.json:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Advertência
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.
SQL Server Express LocalDB (versão local do SQL Server Express)
LocalDB:
- É uma versão leve do Mecanismo de Banco de Dados do SQL Server Express, instalado por padrão com o Visual Studio.
- Inicia sob demanda usando uma cadeia de conexão.
- Está direcionado para o desenvolvimento de programas. Ele é executado no modo de usuário, portanto, não há nenhuma configuração complexa.
- Por padrão, cria arquivos .mdf no diretório C:/Users/{user}.
Semear o banco de dados
Crie uma nova classe chamada SeedData na pasta Models. Substitua o código gerado pelo seguinte:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
}
Se houver algum filme no banco de dados, o inicializador de semente retornará e nenhum filme será adicionado.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Adicionar o inicializador de semente
Substitua o conteúdo do Program.cs pelo código a seguir. O novo código é destacado.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/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.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Exclua todos os registros no banco de dados. Você pode fazer isso com os links de exclusão no navegador ou do SSOX.
Teste o aplicativo. Força o aplicativo a inicializar, chamando o código no arquivo Program.cs, para que o método seed seja executado. Para forçar a inicialização, feche a janela do prompt de comando que o Visual Studio abriu e reinicie pressionando Ctrl+F5.
A aplicação mostra os dados pré-definidos.
Introdução
Esta parte da série de tutoriais foca-se em trabalhar com uma base de dados SQL na sua aplicação ASP.NET Core MVC.
Vai aprender como:
- Registe e configure o contexto da base de dados Entity Framework Core para a sua aplicação ASP.NET Core MVC.
- Trabalhar com cadeias de ligação a bases de dados para desenvolvimento local.
- Use o SQL Server Express LocalDB para desenvolvimento e examine a sua base de dados e dados usando o SQL Server Object Explorer.
- Inicie a sua base de dados com dados de amostra iniciais.
Pré-requisito
Este tutorial utiliza uma base de dados que configurou no passo anterior: Parte 4, adicionar um modelo a uma aplicação Core MVC ASP.NET.
Trabalhar com o contexto da base de dados
O objeto MvcMovieContext lida com a tarefa de se conectar à base de dados e mapear objetos Movie para registos de base de dados. O contexto do banco de dados é registrado com o contêiner Dependency Injection no método ConfigureServices no arquivo Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
O sistema ASP.NET Core Configuration lê a chave ConnectionString. Para desenvolvimento local, ele obtém a cadeia de conexão do arquivo appsettings.json:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Advertência
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.
SQL Server Express LocalDB (versão local do SQL Server Express)
LocalDB:
- É uma versão leve do Mecanismo de Banco de Dados do SQL Server Express, instalado por padrão com o Visual Studio.
- Inicia sob demanda usando uma cadeia de conexão.
- Está direcionado para o desenvolvimento de programas. Ele é executado no modo de usuário, portanto, não há nenhuma configuração complexa.
- Por padrão, cria arquivos .mdf no diretório C:/Users/{user}.
Examinar o banco de dados
No menu Exibir, abra o Pesquisador de Objetos do SQL Server (SSOX).
Clique com o botão direito do rato na tabela Movie> View Designer
Observe o ícone de chave ao lado de ID. Por padrão, o EF cria uma propriedade chamada ID chave primária.
Clique com o botão direito do rato na tabela Movie> Ver Dados
Semear o banco de dados
Crie uma nova classe chamada SeedData na pasta Models. Substitua o código gerado pelo seguinte:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
}
Se houver algum filme no banco de dados, o inicializador de semente retornará e nenhum filme será adicionado.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Adicionar o inicializador de semente
Substitua o conteúdo do Program.cs pelo seguinte código:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MvcMovie.Data;
using MvcMovie.Models;
using System;
namespace MvcMovie
{
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
SeedData.Initialize(services);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Teste o aplicativo.
Exclua todos os registros no banco de dados. Você pode fazer isso com os links de exclusão no navegador ou do SSOX.
Força o aplicativo a inicializar, chamando os métodos na classe Startup, para que o método seed seja executado. Para forçar a inicialização, o IIS Express deve ser interrompido e reiniciado. Você pode fazer isso com qualquer uma das seguintes abordagens:
Clique com o botão direito do mouse no ícone da bandeja do sistema IIS Express na área de notificação e toque em Sair ou Parar Site:
- Se você estava executando o VS no modo de não depuração, pressione F5 para executar no modo de depuração
- Se você estava executando o VS no modo de depuração, pare o depurador e pressione F5
A aplicação mostra os dados pré-definidos.