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.
Note
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Warning
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
V tomto kurzu se přidávají třídy pro správu filmů v databázi. Třídy modelu aplikace používají Entity Framework Core (EF Core) k práci s databází. EF Core je objektově-relační mapovač (O/RM), který zjednodušuje přístup k datům. Nejprve napíšete třídy modelu a EF Core vytvoříte databázi.
Třídy modelu se označují jako třídy POCO (z " Definují vlastnosti dat uložených v databázi.
Přidání datového modelu
V Průzkumník řešení klikněte pravým tlačítkem myši na >. Pojmenujte složku
Models.Klikněte pravým tlačítkem myši na
Modelssložku. Vyberte Přidat>třídu. Pojmenujte třídu Movie.Do třídy přidejte následující vlastnosti
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; } }
Třída Movie obsahuje:
Pole
IDvyžaduje databáze pro primární klíč.Atribut [DataType], který určuje typ dat v
ReleaseDatevlastnosti. S tímto atributem:- Uživatel nemusí do pole kalendářního data zadávat informace o čase.
- Zobrazí se pouze datum, nikoli informace o čase.
Otazník po
stringznačí, že vlastnost je nullable. Další informace naleznete v tématu Odkazové typy s možnou hodnotou Null.
Poznámky k datům jsou popsané v pozdějším kurzu.
Sestavte projekt, abyste ověřili, že nedošlo k žádným chybám kompilace.
Generování uživatelského rozhraní modelu filmu
V této části se model filmu vygeneruje. To znamená, že nástroj pro generování uživatelského rozhraní vytváří stránky pro operace Create, Read, Update a Delete (CRUD) pro model filmu.
Vytvořte složku Pages/Movies:
- Klikněte pravým tlačítkem myši na složku > Přidat>novou složku.
- Pojmenujte složku Filmy.
Klikněte pravým tlačítkem myši na složku > Přidat>novou vygenerovanou položku.
V dialogovém okně Přidat nové generování uživatelského rozhraní vyberte Razor Stránky pomocí entity Framework (CRUD)>Přidat.
Dokončete dialogové okno Přidat Razor stránky pomocí entity Framework (CRUD):
- V rozevíracím seznamu Třída modelu vyberte Movie (RazorPagesMovie.Models).
-
V řádku třídy kontextu dat vyberte znaménko + (plus).
- V dialogovém okně Přidat kontext dat se vygeneruje název
RazorPagesMovie.Data.RazorPagesMovieContexttřídy. - V rozevíracím seznamu Poskytovatel databáze vyberte SQL Server.
- V dialogovém okně Přidat kontext dat se vygeneruje název
- Vyberte Přidat.
Soubor appsettings.json se aktualizuje pomocí připojovací řetězec sloužící k připojení k místní databázi.
Warning
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íchaplikacích
Soubory vytvořené a aktualizované
Proces generování uživatelského rozhraní vytvoří následující soubory:
- Stránky/filmy: Vytváření, odstraňování, podrobnosti, úpravy a index.
Data/RazorPagesMovieContext.cs
Vytvořené soubory jsou vysvětleny v dalším kurzu.
Vygenerovaný proces přidá do Program.cs souboru následující zvýrazněný kód:
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();
Změny Program.cs jsou vysvětleny dále v tomto kurzu.
Vytvoření počátečního schématu databáze pomocí funkce migrace EF
Funkce migrace v Entity Framework Core nabízí způsob, jak:
- Vytvořte počáteční schéma databáze.
- Přírůstkově aktualizujte schéma databáze, aby bylo synchronizované s datovým modelem aplikace. Existující data v databázi se zachovají.
V této části se okno konzoly Správce balíčků (PMC) používá k:
Přidejte počáteční migraci.
Aktualizujte databázi počáteční migrací.
V nabídce Nástroje vyberte Správce balíčků> NuGet Správce balíčků Konzola.
V PMC zadejte následující příkaz:
Add-Migration InitialCreatePříkaz
Add-Migrationvygeneruje kód pro vytvoření počátečního schématu databáze. Schéma je založeno na modelu zadaném vDbContext. ArgumentInitialCreatese používá k pojmenování migrace. Libovolný název lze použít, ale podle konvence je vybraný název, který popisuje migraci.
Zobrazí se následující upozornění, které je vyřešeno v pozdějším kroku:
Pro desetinný sloupec Price pro typ entity Movie nebyl zadán žádný typ. To způsobí, že se hodnoty bezobslužně zkrátí, pokud se nevejdou do výchozí přesnosti a měřítka. Explicitně zadejte typ sloupce serveru SQL, který může obsahovat všechny hodnoty pomocí hasColumnType().
V PMC zadejte následující příkaz:
Update-DatabasePříkaz
Update-Databasespustí metoduUpv migracích, které nebyly použity. V tomto případě příkaz spustí metoduUpMigrations/<time-stamp>_InitialCreate.csv souboru, která vytvoří databázi.
Kontext RazorPagesMovieContextdat:
- Odvozuje z Microsoft.EntityFrameworkCore.DbContext.
- Určuje, které entity jsou součástí datového modelu.
- Koordinuje EF Core funkce, jako je Vytvoření, Čtení, Aktualizace a Odstranění, pro
Moviemodel.
Třída RazorPagesMovieContext ve vygenerovaném souboru 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!;
}
}
Předchozí kód vytvoří vlastnost DbSet<Movie> pro sadu entit. V terminologii Entity Framework sada entit obvykle odpovídá databázové tabulce. Entita odpovídá řádku v tabulce.
Název připojovací řetězec se předává kontextu voláním metody na DbContextOptions objektu. Pro místní vývoj načte konfigurační systém připojovací řetězec ze appsettings.json souboru.
Otestování aplikace
Spusťte aplikaci a připojte
/Moviesse k adrese URL v prohlížeči (http://localhost:port/movies).Pokud se zobrazí následující chyba:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Zmeškali jste krok migrace.
Otestujte odkaz Vytvořit nový .
Note
Do pole pravděpodobně nebudete moct zadávat desetinné čárky
Price. Aby bylo možné podporovat ověřování jQuery pro neanglické národní prostředí, které používají čárku (",") pro desetinnou čárku a pro jiné formáty kalendářních dat než v ANGLIČTINĚ, musí být aplikace globalizována. Pokyny ke globalizaci najdete v tomto problému na GitHubu.Otestujte odkazy Upravit, Podrobnosti a Odstranit.
Další kurz vysvětluje soubory vytvořené generováním uživatelského rozhraní.
Prozkoumání kontextu registrovaného pomocí injektáže závislostí
ASP.NET Core se sestavuje pomocí injektáže závislostí. Služby, jako EF Core je kontext databáze, se během spouštění aplikace registrují pomocí injektáže závislostí. Komponenty, které vyžadují tyto služby (například Razor Stránky), jsou poskytovány prostřednictvím parametrů konstruktoru. Kód konstruktoru, který získá instanci kontextu databáze, se zobrazí později v kurzu.
Nástroj pro generování uživatelského rozhraní automaticky vytvořil kontext databáze a zaregistroval ho v kontejneru injektáže závislostí. Do souboru se přidá Program.cs následující zvýrazněný kód správcem:
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();
Řešení potíží s dokončenou ukázkou
Pokud narazíte na problém, který nemůžete vyřešit, porovnejte kód s dokončeným projektem. Zobrazit nebo stáhnout dokončený projekt (jak stáhnout)
Další kroky
V tomto kurzu se přidávají třídy pro správu filmů v databázi. Třídy modelu aplikace používají Entity Framework Core (EF Core) k práci s databází. EF Core je objektově-relační mapovač (O/RM), který zjednodušuje přístup k datům. Nejprve napíšete třídy modelu a EF Core vytvoříte databázi.
Třídy modelu se označují jako třídy POCO (z " Definují vlastnosti dat uložených v databázi.
Přidání datového modelu
V Průzkumník řešení klikněte pravým tlačítkem myši na >. Pojmenujte složku
Models.Klikněte pravým tlačítkem myši na
Modelssložku. Vyberte Přidat>třídu. Pojmenujte třídu Movie.Do třídy přidejte následující vlastnosti
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; } }
Třída Movie obsahuje:
Pole
IDvyžaduje databáze pro primární klíč.Atribut [DataType], který určuje typ dat v
ReleaseDatevlastnosti. S tímto atributem:- Uživatel nemusí do pole kalendářního data zadávat informace o čase.
- Zobrazí se pouze datum, nikoli informace o čase.
Otazník po
stringznačí, že vlastnost je nullable. Další informace naleznete v tématu Odkazové typy s možnou hodnotou Null.
Poznámky k datům jsou popsané v pozdějším kurzu.
Sestavte projekt, abyste ověřili, že nedošlo k žádným chybám kompilace.
Generování uživatelského rozhraní modelu filmu
V této části se model filmu vygeneruje. To znamená, že nástroj pro generování uživatelského rozhraní vytváří stránky pro operace Create, Read, Update a Delete (CRUD) pro model filmu.
Vytvořte složku Pages/Movies:
- Klikněte pravým tlačítkem myši na složku > Přidat>novou složku.
- Pojmenujte složku Filmy.
Klikněte pravým tlačítkem myši na složku > Přidat>novou vygenerovanou položku.
V dialogovém okně Přidat nové generování uživatelského rozhraní vyberte Razor Stránky pomocí entity Framework (CRUD)>Přidat.
Dokončete dialogové okno Přidat Razor stránky pomocí entity Framework (CRUD):
- V rozevíracím seznamu Třída modelu vyberte Movie (RazorPagesMovie.Models).
-
V řádku třídy kontextu dat vyberte znaménko + (plus).
- V dialogovém okně Přidat kontext dat se vygeneruje název
RazorPagesMovie.Data.RazorPagesMovieContexttřídy. - V rozevíracím seznamu Poskytovatel databáze vyberte SQL Server.
- V dialogovém okně Přidat kontext dat se vygeneruje název
- Vyberte Přidat.
Soubor appsettings.json se aktualizuje pomocí připojovací řetězec sloužící k připojení k místní databázi.
Warning
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íchaplikacích
Soubory vytvořené a aktualizované
Proces generování uživatelského rozhraní vytvoří následující soubory:
- Stránky/filmy: Vytváření, odstraňování, podrobnosti, úpravy a index.
Data/RazorPagesMovieContext.cs
Vytvořené soubory jsou vysvětleny v dalším kurzu.
Vygenerovaný proces přidá do Program.cs souboru následující zvýrazněný kód:
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();
Změny Program.cs jsou vysvětleny dále v tomto kurzu.
Vytvoření počátečního schématu databáze pomocí funkce migrace EF
Funkce migrace v Entity Framework Core nabízí způsob, jak:
- Vytvořte počáteční schéma databáze.
- Přírůstkově aktualizujte schéma databáze, aby bylo synchronizované s datovým modelem aplikace. Existující data v databázi se zachovají.
V této části se okno konzoly Správce balíčků (PMC) používá k:
Přidejte počáteční migraci.
Aktualizujte databázi počáteční migrací.
V nabídce Nástroje vyberte Správce balíčků> NuGet Správce balíčků Konzola.
V PMC zadejte následující příkaz:
Add-Migration InitialCreatePříkaz
Add-Migrationvygeneruje kód pro vytvoření počátečního schématu databáze. Schéma je založeno na modelu zadaném vDbContext. ArgumentInitialCreatese používá k pojmenování migrace. Libovolný název lze použít, ale podle konvence je vybraný název, který popisuje migraci.
Zobrazí se následující upozornění, které je vyřešeno v pozdějším kroku:
Pro desetinný sloupec Price pro typ entity Movie nebyl zadán žádný typ. To způsobí, že se hodnoty bezobslužně zkrátí, pokud se nevejdou do výchozí přesnosti a měřítka. Explicitně zadejte typ sloupce serveru SQL, který může obsahovat všechny hodnoty pomocí hasColumnType().
V PMC zadejte následující příkaz:
Update-DatabasePříkaz
Update-Databasespustí metoduUpv migracích, které nebyly použity. V tomto případě příkaz spustí metoduUpMigrations/<time-stamp>_InitialCreate.csv souboru, která vytvoří databázi.
Kontext RazorPagesMovieContextdat:
- Odvozuje z Microsoft.EntityFrameworkCore.DbContext.
- Určuje, které entity jsou součástí datového modelu.
- Koordinuje EF Core funkce, jako je Vytvoření, Čtení, Aktualizace a Odstranění, pro
Moviemodel.
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!;
}
}
Předchozí kód vytvoří vlastnost DbSet<Movie> pro sadu entit. V terminologii Entity Framework sada entit obvykle odpovídá databázové tabulce. Entita odpovídá řádku v tabulce.
Název připojovací řetězec se předává kontextu voláním metody na DbContextOptions objektu. Pro místní vývoj načte konfigurační systém připojovací řetězec ze appsettings.json souboru.
Otestování aplikace
Spusťte aplikaci a připojte
/Moviesse k adrese URL v prohlížeči (http://localhost:port/movies).Pokud se zobrazí následující chyba:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Zmeškali jste krok migrace.
Otestujte odkaz Vytvořit nový .
Note
Do pole pravděpodobně nebudete moct zadávat desetinné čárky
Price. Aby bylo možné podporovat ověřování jQuery pro neanglické národní prostředí, které používají čárku (",") pro desetinnou čárku a pro jiné formáty kalendářních dat než v ANGLIČTINĚ, musí být aplikace globalizována. Pokyny ke globalizaci najdete v tomto problému na GitHubu.Otestujte odkazy Upravit, Podrobnosti a Odstranit.
Další kurz vysvětluje soubory vytvořené generováním uživatelského rozhraní.
Prozkoumání kontextu registrovaného pomocí injektáže závislostí
ASP.NET Core se sestavuje pomocí injektáže závislostí. Služby, jako EF Core je kontext databáze, se během spouštění aplikace registrují pomocí injektáže závislostí. Komponenty, které vyžadují tyto služby (například Razor Stránky), jsou poskytovány prostřednictvím parametrů konstruktoru. Kód konstruktoru, který získá instanci kontextu databáze, se zobrazí později v kurzu.
Nástroj pro generování uživatelského rozhraní automaticky vytvořil kontext databáze a zaregistroval ho v kontejneru injektáže závislostí. Do souboru se přidá Program.cs následující zvýrazněný kód správcem:
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();
Řešení potíží s dokončenou ukázkou
Pokud narazíte na problém, který nemůžete vyřešit, porovnejte kód s dokončeným projektem. Zobrazit nebo stáhnout dokončený projekt (jak stáhnout)
Další kroky
V tomto kurzu se přidávají třídy pro správu filmů v databázi. Třídy modelu aplikace používají Entity Framework Core (EF Core) k práci s databází. EF Core je objektově-relační mapovač (O/RM), který zjednodušuje přístup k datům. Nejprve napíšete třídy modelu a EF Core vytvoříte databázi.
Třídy modelu se označují jako třídy POCO (z " Definují vlastnosti dat uložených v databázi.
Přidání datového modelu
V Průzkumník řešení klikněte pravým tlačítkem myši na >. Pojmenujte složku
Models.Klikněte pravým tlačítkem myši na
Modelssložku. Vyberte Přidat>třídu. Pojmenujte třídu Movie.Do třídy přidejte následující vlastnosti
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; } }
Třída Movie obsahuje:
Pole
IDvyžaduje databáze pro primární klíč.Atribut [DataType], který určuje typ dat v
ReleaseDatevlastnosti. S tímto atributem:- Uživatel nemusí do pole kalendářního data zadávat informace o čase.
- Zobrazí se pouze datum, nikoli informace o čase.
Otazník po
stringznačí, že vlastnost je nullable. Další informace naleznete v tématu Odkazové typy s možnou hodnotou Null.
Poznámky k datům jsou popsané v pozdějším kurzu.
Sestavte projekt, abyste ověřili, že nedošlo k žádným chybám kompilace.
Generování uživatelského rozhraní modelu filmu
V této části se model filmu vygeneruje. To znamená, že nástroj pro generování uživatelského rozhraní vytváří stránky pro operace Create, Read, Update a Delete (CRUD) pro model filmu.
Vytvořte složku Pages/Movies:
- Klikněte pravým tlačítkem myši na složku > Přidat>novou složku.
- Pojmenujte složku Filmy.
Klikněte pravým tlačítkem myši na složku > Přidat>novou vygenerovanou položku.
V dialogovém okně Přidat nové generování uživatelského rozhraní vyberte Razor Stránky pomocí entity Framework (CRUD)>Přidat.
Dokončete dialogové okno Přidat Razor stránky pomocí entity Framework (CRUD):
- V rozevíracím seznamu Třída modelu vyberte Movie (RazorPagesMovie.Models).
-
V řádku třídy kontextu dat vyberte znaménko + (plus).
- V dialogovém okně Přidat kontext dat se vygeneruje název
RazorPagesMovie.Data.RazorPagesMovieContexttřídy. - V rozevíracím seznamu Poskytovatel databáze vyberte SQL Server.
- V dialogovém okně Přidat kontext dat se vygeneruje název
- Vyberte Přidat.
Soubor appsettings.json se aktualizuje pomocí připojovací řetězec sloužící k připojení k místní databázi.
Warning
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íchaplikacích
Soubory vytvořené a aktualizované
Proces generování uživatelského rozhraní vytvoří následující soubory:
- Stránky/filmy: Vytváření, odstraňování, podrobnosti, úpravy a index.
Data/RazorPagesMovieContext.cs
Vytvořené soubory jsou vysvětleny v dalším kurzu.
Vygenerovaný proces přidá do Program.cs souboru následující zvýrazněný kód:
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();
Změny Program.cs jsou vysvětleny dále v tomto kurzu.
Vytvoření počátečního schématu databáze pomocí funkce migrace EF
Funkce migrace v Entity Framework Core nabízí způsob, jak:
- Vytvořte počáteční schéma databáze.
- Přírůstkově aktualizujte schéma databáze, aby bylo synchronizované s datovým modelem aplikace. Existující data v databázi se zachovají.
V této části se okno konzoly Správce balíčků (PMC) používá k:
- Přidejte počáteční migraci.
- Aktualizujte databázi počáteční migrací.
V nabídce Nástroje vyberte Správce balíčků> NuGet Správce balíčků Konzola.
V PMC zadejte následující příkazy:
Add-Migration InitialCreate Update-Database
Příkaz
Add-Migrationvygeneruje kód pro vytvoření počátečního schématu databáze. Schéma je založeno na modelu zadaném vDbContext. ArgumentInitialCreatese používá k pojmenování migrace. Libovolný název lze použít, ale podle konvence je vybraný název, který popisuje migraci.Příkaz
Update-Databasespustí metoduUpv migracích, které nebyly použity. V tomto případě příkaz spustí metoduUpMigrations/<time-stamp>_InitialCreate.csv souboru, která vytvoří databázi.
Zobrazí se následující upozornění, které je vyřešeno v pozdějším kroku:
Pro desetinný sloupec Price pro typ entity Movie nebyl zadán žádný typ. To způsobí, že se hodnoty bezobslužně zkrátí, pokud se nevejdou do výchozí přesnosti a měřítka. Explicitně zadejte typ sloupce serveru SQL, který může obsahovat všechny hodnoty pomocí hasColumnType().
Kontext RazorPagesMovieContextdat:
- Odvozuje z Microsoft.EntityFrameworkCore.DbContext.
- Určuje, které entity jsou součástí datového modelu.
- Koordinuje EF Core funkce, jako je Vytvoření, Čtení, Aktualizace a Odstranění, pro
Moviemodel.
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!;
}
}
Předchozí kód vytvoří vlastnost DbSet<Movie> pro sadu entit. V terminologii Entity Framework sada entit obvykle odpovídá databázové tabulce. Entita odpovídá řádku v tabulce.
Název připojovací řetězec se předává kontextu voláním metody na DbContextOptions objektu. Pro místní vývoj načte konfigurační systém připojovací řetězec ze appsettings.json souboru.
Otestování aplikace
Spusťte aplikaci a připojte
/Moviesse k adrese URL v prohlížeči (http://localhost:port/movies).Pokud se zobrazí následující chyba:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Zmeškali jste krok migrace.
Otestujte odkaz Vytvořit nový .
Note
Do pole pravděpodobně nebudete moct zadávat desetinné čárky
Price. Aby bylo možné podporovat ověřování jQuery pro neanglické národní prostředí, které používají čárku (",") pro desetinnou čárku a pro jiné formáty kalendářních dat než v ANGLIČTINĚ, musí být aplikace globalizována. Pokyny ke globalizaci najdete v tomto problému na GitHubu.Otestujte odkazy Upravit, Podrobnosti a Odstranit.
Další kurz vysvětluje soubory vytvořené generováním uživatelského rozhraní.
Prozkoumání kontextu registrovaného pomocí injektáže závislostí
ASP.NET Core se sestavuje pomocí injektáže závislostí. Služby, jako EF Core je kontext databáze, se během spouštění aplikace registrují pomocí injektáže závislostí. Komponenty, které vyžadují tyto služby (například Razor Stránky), jsou poskytovány prostřednictvím parametrů konstruktoru. Kód konstruktoru, který získá instanci kontextu databáze, se zobrazí později v kurzu.
Nástroj pro generování uživatelského rozhraní automaticky vytvořil kontext databáze a zaregistroval ho v kontejneru injektáže závislostí. Do souboru se přidá Program.cs následující zvýrazněný kód správcem:
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();
Řešení potíží s dokončenou ukázkou
Pokud narazíte na problém, který nemůžete vyřešit, porovnejte kód s dokončeným projektem. Zobrazit nebo stáhnout dokončený projekt (jak stáhnout)
Další kroky
V tomto kurzu se přidávají třídy pro správu filmů v databázi. Třídy modelu aplikace používají Entity Framework Core (EF Core) k práci s databází. EF Core je objektově-relační mapovač (O/RM), který zjednodušuje přístup k datům. Nejprve napíšete třídy modelu a EF Core vytvoříte databázi.
Třídy modelu se označují jako třídy POCO (z " Definují vlastnosti dat uložených v databázi.
Přidání datového modelu
V Průzkumník řešení klikněte pravým tlačítkem myši na >. Pojmenujte složku
Models.Klikněte pravým tlačítkem myši na
Modelssložku. Vyberte Přidat>třídu. Pojmenujte třídu Movie.Do třídy přidejte následující vlastnosti
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; } } }
Třída Movie obsahuje:
Pole
IDvyžaduje databáze pro primární klíč.Atribut [DataType], který určuje typ dat v
ReleaseDatevlastnosti. S tímto atributem:- Uživatel nemusí do pole kalendářního data zadávat informace o čase.
- Zobrazí se pouze datum, nikoli informace o čase.
Poznámky k datům jsou popsané v pozdějším kurzu.
Sestavte projekt, abyste ověřili, že nedošlo k žádným chybám kompilace.
Generování uživatelského rozhraní modelu filmu
V této části se model filmu vygeneruje. To znamená, že nástroj pro generování uživatelského rozhraní vytváří stránky pro operace Create, Read, Update a Delete (CRUD) pro model filmu.
Přidejte balíček
Microsoft.EntityFrameworkCore.DesignNuGet, který je nutný pro nástroj pro generování uživatelského rozhraní.-
V nabídce Nástroje vyberte NuGet Správce balíčků> Nabídky NuGet pro řešení.

- Vyberte kartu Procházet.
- Zadejte
Microsoft.EntityFrameworkCore.Designho a vyberte ho ze seznamu. - Zkontrolujte Project a pak vyberte Nainstalovat.
- V dialogovém okně Přijetí licence vyberte Možnost Přijmout.
-
V nabídce Nástroje vyberte NuGet Správce balíčků> Nabídky NuGet pro řešení.
Vytvořte složku Pages/Movies:
- Klikněte pravým tlačítkem myši na složku > Přidat>novou složku.
- Pojmenujte složku Filmy.
Klikněte pravým tlačítkem myši na složku > Přidat>novou vygenerovanou položku.
V dialogovém okně Přidat nové generování uživatelského rozhraní vyberte Razor Stránky pomocí entity Framework (CRUD)>Přidat.
Dokončete dialogové okno Přidat Razor stránky pomocí entity Framework (CRUD):
- V rozevíracím seznamu Třída modelu vyberte Movie (RazorPagesMovie.Models).
-
V řádku třídy kontextu dat vyberte znaménko + (plus).
- V dialogovém okně Přidat kontext dat se vygeneruje název
RazorPagesMovie.Data.RazorPagesMovieContexttřídy.
- V dialogovém okně Přidat kontext dat se vygeneruje název
- Vyberte Přidat.
Pokud se zobrazí chybová zpráva s informací, že potřebujete balíček nainstalovat
Microsoft.EntityFrameworkCore.SqlServer, opakujte kroky začínající přidáním >
Soubor appsettings.json se aktualizuje pomocí připojovací řetězec sloužící k připojení k místní databázi.
Warning
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íchaplikacích
Soubory vytvořené a aktualizované
Proces generování uživatelského rozhraní vytvoří následující soubory:
- Stránky/filmy: Vytváření, odstraňování, podrobnosti, úpravy a index.
Data/RazorPagesMovieContext.cs
Vytvořené soubory jsou vysvětleny v dalším kurzu.
Vygenerovaný proces přidá do Program.cs souboru následující zvýrazněný kód:
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();
Změny Program.cs jsou vysvětleny dále v tomto kurzu.
Vytvoření počátečního schématu databáze pomocí funkce migrace EF
Funkce migrace v Entity Framework Core nabízí způsob, jak:
- Vytvořte počáteční schéma databáze.
- Přírůstkově aktualizujte schéma databáze, aby bylo synchronizované s datovým modelem aplikace. Existující data v databázi se zachovají.
V této části se okno konzoly Správce balíčků (PMC) používá k:
- Přidejte počáteční migraci.
- Aktualizujte databázi počáteční migrací.
V nabídce Nástroje vyberte Správce balíčků> NuGet Správce balíčků Konzola.
V PMC zadejte následující příkazy:
Add-Migration InitialCreate Update-Database
Předchozí příkazy nainstalují nástroje Entity Framework Core a spustí migrations příkaz pro vygenerování kódu, který vytvoří počáteční schéma databáze.
Zobrazí se následující upozornění, které je vyřešeno v pozdějším kroku:
Pro desetinný sloupec Price pro typ entity Movie nebyl zadán žádný typ. To způsobí, že se hodnoty bezobslužně zkrátí, pokud se nevejdou do výchozí přesnosti a měřítka. Explicitně zadejte typ sloupce serveru SQL, který může obsahovat všechny hodnoty pomocí hasColumnType().
Příkaz migrations vygeneruje kód pro vytvoření počátečního schématu databáze. Schéma je založeno na modelu zadaném v DbContext. Argument InitialCreate se používá k pojmenování migrací. Libovolný název lze použít, ale podle konvence je vybraný název, který popisuje migraci.
Příkaz update spustí metodu Up v migracích, které nebyly použity. V tomto případě update spustí metodu UpMigrations/<time-stamp>_InitialCreate.cs v souboru, která vytvoří databázi.
Prozkoumání kontextu registrovaného pomocí injektáže závislostí
ASP.NET Core se sestavuje pomocí injektáže závislostí. Služby, jako EF Core je kontext databáze, se během spouštění aplikace registrují pomocí injektáže závislostí. Komponenty, které vyžadují tyto služby (například Razor Stránky), jsou poskytovány prostřednictvím parametrů konstruktoru. Kód konstruktoru, který získá instanci kontextu databáze, se zobrazí později v kurzu.
Nástroj pro generování uživatelského rozhraní automaticky vytvořil kontext databáze a zaregistroval ho v kontejneru injektáže závislostí. Do souboru se přidá Program.cs následující zvýrazněný kód správcem:
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();
Kontext RazorPagesMovieContextdat:
- Odvozuje z Microsoft.EntityFrameworkCore.DbContext.
- Určuje, které entity jsou součástí datového modelu.
- Koordinuje EF Core funkce, jako je Vytvoření, Čtení, Aktualizace a Odstranění, pro
Moviemodel.
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; }
}
}
Předchozí kód vytvoří vlastnost DbSet<Movie> pro sadu entit. V terminologii Entity Framework sada entit obvykle odpovídá databázové tabulce. Entita odpovídá řádku v tabulce.
Název připojovací řetězec se předává kontextu voláním metody na DbContextOptions objektu. Pro místní vývoj načte konfigurační systém připojovací řetězec ze appsettings.json souboru.
Otestování aplikace
Spusťte aplikaci a připojte
/Moviesse k adrese URL v prohlížeči (http://localhost:port/movies).Pokud se zobrazí následující chyba:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Zmeškali jste krok migrace.
Otestujte odkaz Vytvořit nový .
Note
Do pole pravděpodobně nebudete moct zadávat desetinné čárky
Price. Aby bylo možné podporovat ověřování jQuery pro neanglické národní prostředí, které používají čárku (",") pro desetinnou čárku a pro jiné formáty kalendářních dat než v ANGLIČTINĚ, musí být aplikace globalizována. Pokyny ke globalizaci najdete v tomto problému na GitHubu.Otestujte odkazy Upravit, Podrobnosti a Odstranit.
Další kurz vysvětluje soubory vytvořené generováním uživatelského rozhraní.
Řešení potíží s dokončenou ukázkou
Pokud narazíte na problém, který nemůžete vyřešit, porovnejte kód s dokončeným projektem. Zobrazit nebo stáhnout dokončený projekt (jak stáhnout)
Další kroky
V této části se přidávají třídy pro správu filmů v databázi. Třídy modelu aplikace používají Entity Framework Core (EF Core) k práci s databází. EF Core je objektově-relační mapovač (O/RM), který zjednodušuje přístup k datům. Nejprve napíšete třídy modelu a EF Core vytvoříte databázi.
Třídy modelu se označují jako třídy POCO (z " Definují vlastnosti dat uložených v databázi.
Zobrazení nebo stažení vzorového kódu (postup stažení)
Přidání datového modelu
V Průzkumník řešení klikněte pravým tlačítkem myši na >. Pojmenujte složku
Models.Klikněte pravým tlačítkem myši na
Modelssložku. Vyberte Přidat>třídu. Pojmenujte třídu Movie.Do třídy přidejte následující vlastnosti
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; } } }
Třída Movie obsahuje:
Pole
IDvyžaduje databáze pro primární klíč.[DataType(DataType.Date)]: Atribut [DataType] určuje typ dat (Date). S tímto atributem:- Uživatel nemusí do pole kalendářního data zadávat informace o čase.
- Zobrazí se pouze datum, nikoli informace o čase.
Poznámky k datům jsou popsané v pozdějším kurzu.
Sestavte projekt, abyste ověřili, že nedošlo k žádným chybám kompilace.
Generování uživatelského rozhraní modelu filmu
V této části se model filmu vygeneruje. To znamená, že nástroj pro generování uživatelského rozhraní vytváří stránky pro operace Create, Read, Update a Delete (CRUD) pro model filmu.
Vytvořte složku Pages/Movies:
- Klikněte pravým tlačítkem myši na složku > Přidat>novou složku.
- Pojmenujte složku Filmy.
Klikněte pravým tlačítkem myši na složku > Přidat>novou vygenerovanou položku.
V dialogovém okně Přidat generování uživatelského rozhraní vyberte Razor Stránky pomocí entity Framework (CRUD)>Přidat.
Dokončete dialogové okno Přidat Razor stránky pomocí entity Framework (CRUD):
- V rozevíracím seznamu Třída modelu vyberte Movie (RazorPagesMovie.Models).
-
V řádku třídy kontextu dat vyberte znaménko + (plus).
- V dialogovém okně Přidat kontext dat se vygeneruje název
RazorPagesMovie.Data.RazorPagesMovieContexttřídy.
- V dialogovém okně Přidat kontext dat se vygeneruje název
- Vyberte Přidat.
Soubor appsettings.json se aktualizuje pomocí připojovací řetězec sloužící k připojení k místní databázi.
Warning
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íchaplikacích
Soubory vytvořené a aktualizované
Proces generování uživatelského rozhraní vytvoří následující soubory:
- Stránky/filmy: Vytváření, odstraňování, podrobnosti, úpravy a index.
Data/RazorPagesMovieContext.cs
Aktualizované soubory
Startup.cs
Vytvořené a aktualizované soubory jsou vysvětleny v další části.
Vytvoření počátečního schématu databáze pomocí funkce migrace EF
Funkce migrace v Entity Framework Core nabízí způsob, jak:
- Vytvořte počáteční schéma databáze.
- Přírůstkově aktualizujte schéma databáze, aby bylo synchronizované s datovým modelem aplikace. Existující data v databázi se zachovají.
V této části se okno konzoly Správce balíčků (PMC) používá k:
- Přidejte počáteční migraci.
- Aktualizujte databázi počáteční migrací.
V nabídce Nástroje vyberte Správce balíčků> NuGet Správce balíčků Konzola.
V PMC zadejte následující příkazy:
Add-Migration InitialCreate Update-Database
U SQL Serveru vygenerují předchozí příkazy následující upozornění: Pro desetinný sloupec Price (Cena) pro typ entity Movie nebyl zadán žádný typ. To způsobí, že se hodnoty bezobslužně zkrátí, pokud se nevejdou do výchozí přesnosti a měřítka. Explicitně zadejte typ sloupce SERVERU SQL, který může obsahovat všechny hodnoty pomocí hasColumnType()."
Toto upozornění ignorujte, protože se bude řešit v pozdějším kroku.
Příkaz migrations vygeneruje kód pro vytvoření počátečního schématu databáze. Schéma je založeno na modelu zadaném v DbContext. Argument InitialCreate se používá k pojmenování migrací. Libovolný název lze použít, ale podle konvence je vybraný název, který popisuje migraci.
Příkaz update spustí metodu Up v migracích, které nebyly použity. V tomto případě update spustí metodu UpMigrations/<time-stamp>_InitialCreate.cs v souboru, která vytvoří databázi.
Prozkoumání kontextu registrovaného pomocí injektáže závislostí
ASP.NET Core se sestavuje pomocí injektáže závislostí. Služby, jako EF Core je kontext databáze, se během spouštění aplikace registrují pomocí injektáže závislostí. Komponenty, které vyžadují tyto služby (například Razor Stránky), jsou poskytovány prostřednictvím parametrů konstruktoru. Kód konstruktoru, který získá instanci kontextu databáze, se zobrazí později v kurzu.
Nástroj pro generování uživatelského rozhraní automaticky vytvořil kontext databáze a zaregistroval ho v kontejneru injektáže závislostí.
Prozkoumejte metodu Startup.ConfigureServices . Zvýrazněnou čáru přidal scaffolder:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}
Funkce RazorPagesMovieContext souřadnic EF Core , jako je vytvoření, čtení, aktualizace a odstranění, pro Movie model. Kontext dat (RazorPagesMovieContext) je odvozen z Microsoft.EntityFrameworkCore.DbContext. Kontext dat určuje, které entity jsou součástí datového modelu.
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; }
}
}
Předchozí kód vytvoří vlastnost DbSet<Movie> pro sadu entit. V terminologii Entity Framework sada entit obvykle odpovídá databázové tabulce. Entita odpovídá řádku v tabulce.
Název připojovací řetězec se předává kontextu voláním metody na DbContextOptions objektu. Pro místní vývoj načte konfigurační systém připojovací řetězec ze appsettings.json souboru.
Otestování aplikace
Spusťte aplikaci a připojte
/Moviesse k adrese URL v prohlížeči (http://localhost:port/movies).Pokud se zobrazí následující chyba:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed. Login failed for user 'User-name'.Zmeškali jste krok migrace.
Otestujte odkaz Vytvořit .
Note
Do pole pravděpodobně nebudete moct zadávat desetinné čárky
Price. Aby bylo možné podporovat ověřování jQuery pro neanglické národní prostředí, které používají čárku (",") pro desetinnou čárku a pro jiné formáty kalendářních dat než v ANGLIČTINĚ, musí být aplikace globalizována. Pokyny ke globalizaci najdete v tomto problému na GitHubu.Otestujte odkazy Upravit, Podrobnosti a Odstranit.
Protokolování SQL entity Framework Core
Konfiguraci protokolování obvykle zajišťuje oddíl Logging souborů appsettings.{Environment}.json. Pokud chcete protokolovat příkazy SQL, přidejte "Microsoft.EntityFrameworkCore.Database.Command": "Information" do appsettings.Development.json souboru:
{
"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": "*"
}
V předchozím kódu JSON se příkazy SQL zobrazí na příkazovém řádku a v okně výstupu sady Visual Studio.
Další informace najdete v tématu Protokolování v .NET a ASP.NET Core a tento problém na GitHubu.
Další kurz vysvětluje soubory vytvořené generováním uživatelského rozhraní.
Další kroky
V této části se přidávají třídy pro správu filmů. Třídy modelu aplikace používají Entity Framework Core (EF Core) k práci s databází. EF Core je objektově-relační mapovač (O/RM), který zjednodušuje přístup k datům.
Třídy modelu se označují jako třídy POCO (z "prostých objektů CLR"), protože nemají žádnou závislost na EF Core. Definují vlastnosti dat uložených v databázi.
Zobrazení nebo stažení vzorového kódu (postup stažení)
Warning
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íchaplikacích
Přidání datového modelu
Klikněte pravým tlačítkem myši na >. Pojmenujte složku Models.
Klikněte pravým tlačítkem myši na Models složku. Vyberte Přidat>třídu. Pojmenujte třídu Movie.
Do třídy přidejte následující vlastnosti 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; }
}
}
Třída Movie obsahuje:
Pole
IDvyžaduje databáze pro primární klíč.[DataType(DataType.Date)]: Atribut DataType určuje typ dat (Date). S tímto atributem:- Uživatel nemusí do pole data zadávat informace o čase.
- Zobrazí se pouze datum, nikoli informace o čase.
Poznámky k datům jsou popsané v pozdějším kurzu.
Poznámky k datům jsou popsané v pozdějším kurzu.
Sestavte projekt, abyste ověřili, že nedošlo k žádným chybám kompilace.
Generování uživatelského rozhraní modelu filmu
V této části se model filmu vygeneruje. To znamená, že nástroj pro generování uživatelského rozhraní vytváří stránky pro operace Create, Read, Update a Delete (CRUD) pro model filmu.
Vytvořte složku Pages/Movies:
- Klikněte pravým tlačítkem myši na složku > Přidat>novou složku.
- Pojmenujte složku Filmy.
Klikněte pravým tlačítkem myši na složku > Přidat>novou vygenerovanou položku.
V dialogovém okně Přidat generování uživatelského rozhraní vyberte Razor Stránky pomocí entity Framework (CRUD)>Přidat.
Dokončete dialogové okno Přidat Razor stránky pomocí entity Framework (CRUD):
- V rozevíracím seznamu Třída modelu vyberte Movie (RazorPagesMovie.Models).
-
V řádku třídy kontextu dat vyberte + znaménko (plus) a změňte vygenerovaný název z RazorPagesMovie.
Models. RazorPagesMovieContext na RazorPagesMovie.Data. RazorPagesMovieContext. Tato změna není nutná. Vytvoří třídu kontextu databáze se správným oborem názvů. - Vyberte Přidat.
Soubor appsettings.json se aktualizuje pomocí připojovací řetězec sloužící k připojení k místní databázi.
Vytvořené soubory
Proces generování uživatelského rozhraní vytvoří a aktualizuje následující soubory:
- Stránky/filmy: Vytváření, odstraňování, podrobnosti, úpravy a index.
Data/RazorPagesMovieContext.cs
Updated
Startup.cs
Vytvořené a aktualizované soubory jsou vysvětleny v další části.
Počáteční migrace
V této části se konzola Správce balíčků (PMC) používá k:
- Přidejte počáteční migraci.
- Aktualizujte databázi počáteční migrací.
V nabídce Nástroje vyberte Správce balíčků> NuGet Správce balíčků Konzola.
V PMC zadejte následující příkazy:
Add-Migration InitialCreate
Update-Database
Předchozí příkazy vygenerují následující upozornění: Pro desetinný sloupec Price (Cena) pro typ entity Movie nebyl zadán žádný typ. To způsobí, že se hodnoty bezobslužně zkrátí, pokud se nevejdou do výchozí přesnosti a měřítka. Explicitně zadejte typ sloupce SERVERU SQL, který může obsahovat všechny hodnoty pomocí hasColumnType()."
Toto upozornění ignorujte, protože se bude řešit v pozdějším kroku.
Příkaz migrace vygeneruje kód pro vytvoření počátečního schématu databáze. Schéma je založeno na modelu zadaném v DbContext. Argument InitialCreate se používá k pojmenování migrací. Libovolný název lze použít, ale podle konvence je vybraný název, který popisuje migraci.
Příkaz update spustí metodu Up v migracích, které nebyly použity. V tomto případě update spustí metodu Up v Migrations/<time-stamp>_InitialCreate.cs souboru, která vytvoří databázi.
Prozkoumání kontextu registrovaného pomocí injektáže závislostí
ASP.NET Core se sestavuje pomocí injektáže závislostí. Služby, jako EF Core je kontext databáze, se během spouštění aplikace registrují pomocí injektáže závislostí. Komponenty, které vyžadují tyto služby, například Razor Stránky, jsou poskytovány prostřednictvím parametrů konstruktoru. Kód konstruktoru, který získá instanci kontextu databáze, se zobrazí později v kurzu.
Nástroj pro generování uživatelského rozhraní automaticky vytvořil kontext databáze a zaregistroval ho v kontejneru injektáže závislostí.
Prozkoumejte metodu Startup.ConfigureServices . Zvýrazněnou čáru přidal scaffolder:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}
Funkce RazorPagesMovieContext souřadnic EF Core , jako je vytvoření, čtení, aktualizace a odstranění, pro Movie model. Kontext dat (RazorPagesMovieContext) je odvozen z Microsoft.EntityFrameworkCore.DbContext. Kontext dat určuje, které entity jsou součástí datového modelu.
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; }
}
}
Předchozí kód vytvoří vlastnost DbSet<Movie> pro sadu entit. V terminologii Entity Framework sada entit obvykle odpovídá databázové tabulce. Entita odpovídá řádku v tabulce.
Název připojovací řetězec se předává kontextu voláním metody na DbContextOptions objektu. Pro místní vývoj načte konfigurační systém připojovací řetězec ze appsettings.json souboru.
Otestování aplikace
- Spusťte aplikaci a připojte
/Moviesse k adrese URL v prohlížeči (http://localhost:port/movies).
Pokud se zobrazí chyba:
SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.
Zmeškali jste krok migrace.
Otestujte odkaz Vytvořit .
Note
Do pole pravděpodobně nebudete moct zadávat desetinné čárky
Price. Aby bylo možné podporovat ověřování jQuery pro neanglické národní prostředí, které používají čárku (",") pro desetinnou čárku a pro jiné formáty kalendářních dat než v ANGLIČTINĚ, musí být aplikace globalizována. Pokyny ke globalizaci najdete v tomto problému na GitHubu.Otestujte odkazy Upravit, Podrobnosti a Odstranit.
Další kurz vysvětluje soubory vytvořené generováním uživatelského rozhraní.