Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Varování
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Pro aktuální verzi tohoto článku viz verzi .NET 9.
Úvod
Tato část série kurzů se zaměřuje na práci s databází SQL ve vaší aplikaci ASP.NET Core MVC.
Co se naučíte:
- Zaregistrujte a nakonfigurujte kontext databáze Entity Framework Core pro vaši aplikaci ASP.NET Core MVC.
- Práce s připojovacími řetězci databáze pro lokální vývoj
- K vývoji použijte SQL Server Express LocalDB a prozkoumejte databázi a data pomocí Průzkumníka objektů SQL Serveru.
- Naplňte svou databázi počátečními vzorovými daty.
Předpoklad
Tento kurz používá databázi, kterou jste nastavili v předchozím kroku: Část 4, přidání modelu do aplikace ASP.NET Core MVC.
Práce s kontextem databáze
Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru pro injektování závislostí v Program.cs souboru.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Varování
Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích vizte Secure authentication flows.
SQL Server Express LocalDB
LocalDB:
- Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
- Spustí se na vyžádání pomocí připojovacího řetězce.
- Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
- Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.
Prozkoumání databáze
V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).
Klikněte pravým tlačítkem myši na tabulku Movie (dbo.Movie) a vyberte > Návrhář zobrazení
Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.
Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data.
Naplnit databázi
Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:
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();
}
}
}
Pokud jsou v databázi nějaké filmy, počáteční inicializátor se vrátí a žádné filmy nejsou přidány.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Přidat inicializátor semen
Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.
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();
Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.
Otestujete aplikaci. Vynuťte inicializaci aplikace voláním kódu v souboru Program.cs, aby se spustila metoda seed. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.
Aplikace zobrazuje osetá data.
Úvod
Tato část série kurzů se zaměřuje na práci s databází SQL ve vaší aplikaci ASP.NET Core MVC.
Co se naučíte:
- Zaregistrujte a nakonfigurujte kontext databáze Entity Framework Core pro vaši aplikaci ASP.NET Core MVC.
- Práce s připojovacími řetězci databáze pro lokální vývoj
- K vývoji použijte SQL Server Express LocalDB a prozkoumejte databázi a data pomocí Průzkumníka objektů SQL Serveru.
- Naplňte svou databázi počátečními vzorovými daty.
Předpoklad
Tento kurz používá databázi, kterou jste nastavili v předchozím kroku: Část 4, přidání modelu do aplikace ASP.NET Core MVC.
Práce s kontextem databáze
Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru pro injektování závislostí v Program.cs souboru.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Varování
Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích vizte Secure authentication flows.
SQL Server Express LocalDB
LocalDB:
- Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
- Spustí se na vyžádání pomocí připojovacího řetězce.
- Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
- Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.
Prozkoumání databáze
V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).
Klikněte pravým tlačítkem myši na tabulku Movie (dbo.Movie) a vyberte > Návrhář zobrazení
Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.
Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data.
Naplnit databázi
Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:
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();
}
}
}
Pokud jsou v databázi nějaké filmy, počáteční inicializátor se vrátí a žádné filmy nejsou přidány.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Přidat inicializátor semen
Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.
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();
Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.
Otestujete aplikaci. Vynuťte inicializaci aplikace voláním kódu v souboru Program.cs, aby se spustila metoda seed. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.
Aplikace zobrazuje osetá data.
Úvod
Tato část série kurzů se zaměřuje na práci s databází SQL ve vaší aplikaci ASP.NET Core MVC.
Co se naučíte:
- Zaregistrujte a nakonfigurujte kontext databáze Entity Framework Core pro vaši aplikaci ASP.NET Core MVC.
- Práce s připojovacími řetězci databáze pro lokální vývoj
- K vývoji použijte SQL Server Express LocalDB a prozkoumejte databázi a data pomocí Průzkumníka objektů SQL Serveru.
- Naplňte svou databázi počátečními vzorovými daty.
Předpoklad
Tento kurz používá databázi, kterou jste nastavili v předchozím kroku: Část 4, přidání modelu do aplikace ASP.NET Core MVC.
Práce s kontextem databáze
Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru pro injektování závislostí v Program.cs souboru.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Varování
Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích vizte Secure authentication flows.
SQL Server Express LocalDB
LocalDB:
- Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
- Spustí se na vyžádání pomocí připojovacího řetězce.
- Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
- Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.
Prozkoumání databáze
V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).
Klikněte pravým tlačítkem myši na tabulku Movie (dbo.Movie) a vyberte > Návrhář zobrazení
Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.
Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data.
Naplnit databázi
Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:
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();
}
}
}
Pokud jsou v databázi nějaké filmy, počáteční inicializátor se vrátí a žádné filmy nejsou přidány.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<a name=snippet_"si">
Přidat inicializátor semen
Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.
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();
Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.
Otestujete aplikaci. Vynuťte inicializaci aplikace voláním kódu v souboru Program.cs, aby se spustila metoda seed. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.
Aplikace zobrazuje osetá data.
Úvod
Tato část série kurzů se zaměřuje na práci s databází SQL ve vaší aplikaci ASP.NET Core MVC.
Co se naučíte:
- Zaregistrujte a nakonfigurujte kontext databáze Entity Framework Core pro vaši aplikaci ASP.NET Core MVC.
- Práce s připojovacími řetězci databáze pro lokální vývoj
- K vývoji použijte SQL Server Express LocalDB a prozkoumejte databázi a data pomocí Průzkumníka objektů SQL Serveru.
- Naplňte svou databázi počátečními vzorovými daty.
Předpoklad
Tento kurz používá databázi, kterou jste nastavili v předchozím kroku: Část 4, přidání modelu do aplikace ASP.NET Core MVC.
Práce s kontextem databáze
Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru pro injektování závislostí v Program.cs souboru.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Varování
Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích vizte Secure authentication flows.
SQL Server Express LocalDB
LocalDB:
- Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
- Spustí se na vyžádání pomocí připojovacího řetězce.
- Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
- Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.
Naplnit databázi
Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:
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();
}
}
}
}
Pokud jsou v databázi nějaké filmy, počáteční inicializátor se vrátí a žádné filmy nejsou přidány.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Přidat inicializátor semen
Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.
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();
Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.
Otestujete aplikaci. Vynuťte inicializaci aplikace voláním kódu v souboru Program.cs, aby se spustila metoda seed. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.
Aplikace zobrazuje osetá data.
Úvod
Tato část série kurzů se zaměřuje na práci s databází SQL ve vaší aplikaci ASP.NET Core MVC.
Co se naučíte:
- Zaregistrujte a nakonfigurujte kontext databáze Entity Framework Core pro vaši aplikaci ASP.NET Core MVC.
- Práce s připojovacími řetězci databáze pro lokální vývoj
- K vývoji použijte SQL Server Express LocalDB a prozkoumejte databázi a data pomocí Průzkumníka objektů SQL Serveru.
- Naplňte svou databázi počátečními vzorovými daty.
Předpoklad
Tento kurz používá databázi, kterou jste nastavili v předchozím kroku: Část 4, přidání modelu do aplikace ASP.NET Core MVC.
Práce s kontextem databáze
Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrován do kontejneru pro vkládání závislostí v metodě v souboru ConfigureServices.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Varování
Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích vizte Secure authentication flows.
SQL Server Express LocalDB
LocalDB:
- Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
- Spustí se na vyžádání pomocí připojovacího řetězce.
- Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
- Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.
Prozkoumání databáze
V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).
Klikněte pravým tlačítkem myši na tabulku Movie, poté vyberte > Zobrazit návrháře.
>
Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.
Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data.
Naplnit databázi
Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:
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();
}
}
}
}
Pokud jsou v databázi nějaké filmy, počáteční inicializátor se vrátí a žádné filmy nejsou přidány.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Přidat inicializátor semen
Program.cs Obsah nahraďte následujícím kódem:
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>();
});
}
}
Otestujete aplikaci.
Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.
Vynutit inicializaci aplikace, volání metod ve Startup třídě, takže počáteční metoda se spustí. Aby bylo možné vynutit inicializaci, musí se služba IIS Express zastavit a restartovat. Můžete to udělat pomocí některého z následujících přístupů:
V oznamovací oblasti klikněte pravým tlačítkem na ikonu IIS Express a klepněte na Ukončit nebo Zastavit web:
- Pokud jste spustili VS v režimu bez ladění, stiskněte klávesu F5 a spusťte ji v režimu ladění.
- Pokud jste spustili VS v režimu ladění, zastavte ladicí program a stiskněte klávesu F5.
Aplikace zobrazuje osetá data.