Megosztás a következőn keresztül:


2. rész, modell hozzáadása Razor Pages-alkalmazáshoz a ASP.NET Core-ban

Note

Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.

Warning

A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. Az aktuális kiadáshoz lásd a cikk .NET 9-es verzióját.

Ebben az oktatóanyagban osztályokat adunk hozzá az adatbázisokban lévő filmek kezeléséhez. Az alkalmazás modellosztályai Entity Framework Core (EF Core) használnak az adatbázis használatához. EF Core egy objektum-relációs leképező (O/RM), amely leegyszerűsíti az adathozzáférést. Először a modellosztályokat írja meg, és EF Core hozza létre az adatbázist.

A modellosztályokat POCO osztályoknak (a "Plain-Old CLR Objects" kifejezés alapján) nevezzük, mert nem függenek EF Core-tól. Ezek határozzák meg az adatbázisban tárolt adatok tulajdonságait.

Adatmodell hozzáadása

  1. A Megoldáskezelőbenkattintson a jobb gombbal a RazorPagesMovie projektre >>Új mappa hozzáadása. Nevezze el a mappát Models.

  2. Kattintson a jobb gombbal a Models mappára. Válassza >osztályhozzáadása lehetőséget. Nevezze el az osztályt Film.

  3. Adja hozzá a következő tulajdonságokat a Movie osztályhoz:

    using System.ComponentModel.DataAnnotations;
    
    namespace RazorPagesMovie.Models;
    
    public class Movie
    {
        public int Id { get; set; }
        public string? Title { get; set; }
        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string? Genre { get; set; }
        public decimal Price { get; set; }
    }
    

A Movie osztály a következőket tartalmazza:

  • A ID mezőt az adatbázisnak kell megadnia az elsődleges kulcshoz.

  • Egy [DataType] attribútum, amely meghatározza a ReleaseDate tulajdonság adattípusát. Ezzel az attribútummal:

    • A felhasználónak nem kell időadatokat megadnia a dátum mezőben.
    • Csak a dátum jelenik meg, az időadatok nem.
  • Az string utáni kérdőjel azt jelzi, hogy a tulajdonság null értékű. További információért tekintse meg: Null értékű hivatkozástípusok.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

Hozza létre a projektet annak ellenőrzéséhez, hogy nincsenek-e fordítási hibák.

Állványozza fel a filmpéldányt

Ebben a szakaszban a filmmodell keretezett van. Vagyis az állványzati eszköz oldalakat hoz létre a filmmodell létrehozási, olvasási, frissítési és törlési (CRUD) műveleteihez.

  1. Hozza létre a Lapok/filmek mappát:

    1. Kattintson a jobb gombbal a Lapok mappára >>Új mappa hozzáadása.
    2. Nevezze el a mappát Filmek.
  2. Kattintson a jobb gombbal a Lapok/filmek mappára, >>Új állványozott elem hozzáadása.

    Új állványozott elem

  3. Az Új állvány hozzáadása párbeszédpanelen válassza a Razor Lapokat az Entity Framework (CRUD) használatával>hozzáadása lehetőséget.

    Állványzat hozzáadása

  4. Töltse ki a jelölésű, az Entity Framework (CRUD) használatával hozzáadott Razor lapokat a párbeszédpanelen.

    1. A Modellosztály legördülő listában válassza a Film (RazorPagesMovie.Models)lehetőséget.
    2. Az Data context class sorban válassza ki a + (plusz) jelet.
      1. Az Adatkörnyezet hozzáadása párbeszédpanelen létre lesz hozva a RazorPagesMovie.Data.RazorPagesMovieContext osztálynév.
      2. Az Adatbázis-szolgáltató legördülő listában válassza SQL Serverlehetőséget.
    3. Válassza a Hozzáadás lehetőséget.

    Razor lapok hozzáadása

A appsettings.json fájl a helyi adatbázishoz való csatlakozáshoz használt kapcsolati sztringgel frissül.

Warning

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Létrehozott és frissített fájlok

Az állványzati folyamat a következő fájlokat hozza létre:

  • Lapok/filmek: Létrehozás, Törlés, Részletek, Szerkesztés és Indexelés.
  • Data/RazorPagesMovieContext.cs

A létrehozott fájlokat a következő oktatóanyag ismerteti.

Az állványzati folyamat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

A Program.cs módosításait az oktatóanyag későbbi részében ismertetjük.

A kezdeti adatbázisséma létrehozása az EF migrálási funkciójával

Az Entity Framework Core migrálási funkciója a következőket teszi lehetővé:

  • Hozza létre a kezdeti adatbázissémát.
  • Növekményesen frissítse az adatbázissémát, hogy szinkronban maradjon az alkalmazás adatmodelljével. Az adatbázis meglévő adatai megmaradnak.

Ebben a szakaszban a Package Manager Console (PMC) ablak a következőre szolgál:

  • Adjon hozzá egy kezdeti migrációt.

  • Frissítse az adatbázist a kezdeti migrálással.

  • Az Eszközök menüben válassza a NuGet csomagkezelő>csomagkezelő konzollehetőséget.

    PMC menü

  • A PMC-ben adja meg a következő parancsot:

    Add-Migration InitialCreate
    
  • A Add-Migration parancs létrehoz egy kódot a kezdeti adatbázisséma létrehozásához. A séma a DbContext-ban meghatározott modellen alapul. A InitialCreate argumentum a migrálás elnevezésére szolgál. Bármilyen név használható, de konvenció szerint ki van jelölve egy név, amely leírja az áttelepítést.

A következő figyelmeztetés jelenik meg, amely egy későbbi lépésben lesz kezelve:

Nem adott meg típust a "Movie" entitástípus "Ár" tizedesoszlopához. Ez az értékek csonkolásához vezet, ha nem illeszkednek az alapértelmezett pontossághoz és mértékhez. Explicit módon adja meg azt az SQL Server-oszloptípust, amely a "HasColumnType()" használatával minden értéket el tud fogadni.

  • A PMC-ben adja meg a következő parancsot:

    Update-Database
    

    A Update-Database parancs a Up metódust futtatja a nem alkalmazott migrálásokban. Ebben az esetben a parancs a Up metódust futtatja a Migrations/<time-stamp>_InitialCreate.cs fájlban, amely létrehozza az adatbázist.

Az adatkörnyezet RazorPagesMovieContext:

  • A Microsoft.EntityFrameworkCore.DbContext származik.
  • Meghatározza, hogy mely entitások szerepelnek az adatmodellben.
  • A EF Core modell Movie funkcióit koordinálja, például létrehozást, olvasást, frissítést és törlést.

A RazorPagesMovieContext osztály a létrehozott fájlban: 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!;
    }
}

Az előző kód létrehoz egy DbSet<Movie> tulajdonságot az entitáskészlethez. Az Entity Framework terminológiájában az entitáskészletek általában egy adatbázistáblának felelnek meg. Az entitás a tábla egy sorának felel meg.

A kapcsolati sztring nevét a rendszer egy DbContextOptions objektum metódusának meghívásával adja át a környezetnek. Helyi fejlesztés esetén a konfigurációs rendszer beolvassa a kapcsolati sztringet a appsettings.json fájlból.

Az alkalmazás tesztelése

  1. Futtassa az alkalmazást, és fűzze hozzá /Movies a böngésző URL-címéhez (http://localhost:port/movies).

    Ha a következő hibaüzenet jelenik meg:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Kihagyta a(z) lépést amigráció során.

  2. Tesztelje az Új létrehozása hivatkozást.

    Lap létrehozása

    Note

    Előfordulhat, hogy nem tud tizedesvesszőt beírni a Price mezőbe. Ha támogatni szeretné jQuery-érvényesítési olyan nem angol nyelvű területi beállításokhoz, amelyek vesszőt (",") használnak tizedesvesszőhöz és nem US-English dátumformátumokhoz, az alkalmazást globalizálni kell. A globalizációval kapcsolatos utasításokért tekintse meg a ésGitHub-problémát.

  3. Tesztelje a Szerkesztés, Részletekés Törlés hivatkozásokat.

A következő oktatóanyag az állványzatok által létrehozott fájlokat ismerteti.

A függőséginjektálással regisztrált környezet vizsgálata

ASP.NET Core a függőségek injektálásávalépül. A EF Core adatbázis-környezethez hasonló szolgáltatások függőséginjektálással vannak regisztrálva az alkalmazás indításakor. Az ilyen szolgáltatásokat igénylő összetevők (például Razor Oldalak) konstruktorparamétereken keresztül érhetők el. Az adatbázis-környezetpéldányt lekérő konstruktorkód később jelenik meg az oktatóanyagban.

Az állványzat-kezelő eszköz automatikusan létrehozott egy adatbázis-környezetet, és regisztrálta azt a függőséginjektálási tárolóban. Az állványzat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

Hibaelhárítás a kész mintával

Ha olyan problémába ütközik, amely nem oldható meg, hasonlítsa össze a kódot a befejezett projektel. Befejezett projekt megtekintése vagy letöltése (hogyan lehet letölteni).

Következő lépések

Ebben az oktatóanyagban osztályokat adunk hozzá az adatbázisokban lévő filmek kezeléséhez. Az alkalmazás modellosztályai Entity Framework Core (EF Core) használnak az adatbázis használatához. EF Core egy objektum-relációs leképező (O/RM), amely leegyszerűsíti az adathozzáférést. Először a modellosztályokat írja meg, és EF Core hozza létre az adatbázist.

A modellosztályokat POCO osztályoknak (a "Plain-Old CLR Objects" kifejezés alapján) nevezzük, mert nem függenek EF Core-tól. Ezek határozzák meg az adatbázisban tárolt adatok tulajdonságait.

Adatmodell hozzáadása

  1. A Megoldáskezelőbenkattintson a jobb gombbal a RazorPagesMovie projektre >>Új mappa hozzáadása. Nevezze el a mappát Models.

  2. Kattintson a jobb gombbal a Models mappára. Válassza >osztályhozzáadása lehetőséget. Nevezze el az osztályt Film.

  3. Adja hozzá a következő tulajdonságokat a Movie osztályhoz:

    using System.ComponentModel.DataAnnotations;
    
    namespace RazorPagesMovie.Models;
    
    public class Movie
    {
        public int Id { get; set; }
        public string? Title { get; set; }
        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string? Genre { get; set; }
        public decimal Price { get; set; }
    }
    

A Movie osztály a következőket tartalmazza:

  • A ID mezőt az adatbázisnak kell megadnia az elsődleges kulcshoz.

  • Egy [DataType] attribútum, amely meghatározza a ReleaseDate tulajdonság adattípusát. Ezzel az attribútummal:

    • A felhasználónak nem kell időadatokat megadnia a dátum mezőben.
    • Csak a dátum jelenik meg, az időadatok nem.
  • Az string utáni kérdőjel azt jelzi, hogy a tulajdonság null értékű. További információért tekintse meg: Null értékű hivatkozástípusok.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

Hozza létre a projektet annak ellenőrzéséhez, hogy nincsenek-e fordítási hibák.

Állványozza fel a filmpéldányt

Ebben a szakaszban a filmmodell keretezett van. Vagyis az állványzati eszköz oldalakat hoz létre a filmmodell létrehozási, olvasási, frissítési és törlési (CRUD) műveleteihez.

  1. Hozza létre a Lapok/filmek mappát:

    1. Kattintson a jobb gombbal a Lapok mappára >>Új mappa hozzáadása.
    2. Nevezze el a mappát Filmek.
  2. Kattintson a jobb gombbal a Lapok/filmek mappára, >>Új állványozott elem hozzáadása.

    Új állványozott elem

  3. Az Új állvány hozzáadása párbeszédpanelen válassza a Razor Lapokat az Entity Framework (CRUD) használatával>hozzáadása lehetőséget.

    Állványzat hozzáadása

  4. Töltse ki a jelölésű, az Entity Framework (CRUD) használatával hozzáadott Razor lapokat a párbeszédpanelen.

    1. A Modellosztály legördülő listában válassza a Film (RazorPagesMovie.Models)lehetőséget.
    2. Az Data context class sorban válassza ki a + (plusz) jelet.
      1. Az Adatkörnyezet hozzáadása párbeszédpanelen létre lesz hozva a RazorPagesMovie.Data.RazorPagesMovieContext osztálynév.
      2. Az Adatbázis-szolgáltató legördülő listában válassza SQL Serverlehetőséget.
    3. Válassza a Hozzáadás lehetőséget.

    Razor lapok hozzáadása

A appsettings.json fájl a helyi adatbázishoz való csatlakozáshoz használt kapcsolati sztringgel frissül.

Warning

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Létrehozott és frissített fájlok

Az állványzati folyamat a következő fájlokat hozza létre:

  • Lapok/filmek: Létrehozás, Törlés, Részletek, Szerkesztés és Indexelés.
  • Data/RazorPagesMovieContext.cs

A létrehozott fájlokat a következő oktatóanyag ismerteti.

Az állványzati folyamat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

A Program.cs módosításait az oktatóanyag későbbi részében ismertetjük.

A kezdeti adatbázisséma létrehozása az EF migrálási funkciójával

Az Entity Framework Core migrálási funkciója a következőket teszi lehetővé:

  • Hozza létre a kezdeti adatbázissémát.
  • Növekményesen frissítse az adatbázissémát, hogy szinkronban maradjon az alkalmazás adatmodelljével. Az adatbázis meglévő adatai megmaradnak.

Ebben a szakaszban a Package Manager Console (PMC) ablak a következőre szolgál:

  • Adjon hozzá egy kezdeti migrációt.

  • Frissítse az adatbázist a kezdeti migrálással.

  • Az Eszközök menüben válassza a NuGet csomagkezelő>csomagkezelő konzollehetőséget.

    PMC menü

  • A PMC-ben adja meg a következő parancsot:

    Add-Migration InitialCreate
    
  • A Add-Migration parancs létrehoz egy kódot a kezdeti adatbázisséma létrehozásához. A séma a DbContext-ban meghatározott modellen alapul. A InitialCreate argumentum a migrálás elnevezésére szolgál. Bármilyen név használható, de konvenció szerint ki van jelölve egy név, amely leírja az áttelepítést.

A következő figyelmeztetés jelenik meg, amely egy későbbi lépésben lesz kezelve:

Nem adott meg típust a "Movie" entitástípus "Ár" tizedesoszlopához. Ez az értékek csonkolásához vezet, ha nem illeszkednek az alapértelmezett pontossághoz és mértékhez. Explicit módon adja meg azt az SQL Server-oszloptípust, amely a "HasColumnType()" használatával minden értéket el tud fogadni.

  • A PMC-ben adja meg a következő parancsot:

    Update-Database
    

    A Update-Database parancs a Up metódust futtatja a nem alkalmazott migrálásokban. Ebben az esetben a parancs a Up metódust futtatja a Migrations/<time-stamp>_InitialCreate.cs fájlban, amely létrehozza az adatbázist.

Az adatkörnyezet RazorPagesMovieContext:

  • A Microsoft.EntityFrameworkCore.DbContext származik.
  • Meghatározza, hogy mely entitások szerepelnek az adatmodellben.
  • A EF Core modell Movie funkcióit koordinálja, például létrehozást, olvasást, frissítést és törlést.
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!;
    }
}

Az előző kód létrehoz egy DbSet<Movie> tulajdonságot az entitáskészlethez. Az Entity Framework terminológiájában az entitáskészletek általában egy adatbázistáblának felelnek meg. Az entitás a tábla egy sorának felel meg.

A kapcsolati sztring nevét a rendszer egy DbContextOptions objektum metódusának meghívásával adja át a környezetnek. Helyi fejlesztés esetén a konfigurációs rendszer beolvassa a kapcsolati sztringet a appsettings.json fájlból.

Az alkalmazás tesztelése

  1. Futtassa az alkalmazást, és fűzze hozzá /Movies a böngésző URL-címéhez (http://localhost:port/movies).

    Ha a következő hibaüzenet jelenik meg:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Kihagyta a(z) lépést amigráció során.

  2. Tesztelje az Új létrehozása hivatkozást.

    Lap létrehozása

    Note

    Előfordulhat, hogy nem tud tizedesvesszőt beírni a Price mezőbe. Ha támogatni szeretné jQuery-érvényesítési olyan nem angol nyelvű területi beállításokhoz, amelyek vesszőt (",") használnak tizedesvesszőhöz és nem US-English dátumformátumokhoz, az alkalmazást globalizálni kell. A globalizációval kapcsolatos utasításokért tekintse meg a ésGitHub-problémát.

  3. Tesztelje a Szerkesztés, Részletekés Törlés hivatkozásokat.

A következő oktatóanyag az állványzatok által létrehozott fájlokat ismerteti.

A függőséginjektálással regisztrált környezet vizsgálata

ASP.NET Core a függőségek injektálásávalépül. A EF Core adatbázis-környezethez hasonló szolgáltatások függőséginjektálással vannak regisztrálva az alkalmazás indításakor. Az ilyen szolgáltatásokat igénylő összetevők (például Razor Oldalak) konstruktorparamétereken keresztül érhetők el. Az adatbázis-környezetpéldányt lekérő konstruktorkód később jelenik meg az oktatóanyagban.

Az állványzat-kezelő eszköz automatikusan létrehozott egy adatbázis-környezetet, és regisztrálta azt a függőséginjektálási tárolóban. Az állványzat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

Hibaelhárítás a kész mintával

Ha olyan problémába ütközik, amely nem oldható meg, hasonlítsa össze a kódot a befejezett projektel. Befejezett projekt megtekintése vagy letöltése (hogyan lehet letölteni).

Következő lépések

Ebben az oktatóanyagban osztályokat adunk hozzá az adatbázisokban lévő filmek kezeléséhez. Az alkalmazás modellosztályai Entity Framework Core (EF Core) használnak az adatbázis használatához. EF Core egy objektum-relációs leképező (O/RM), amely leegyszerűsíti az adathozzáférést. Először a modellosztályokat írja meg, és EF Core hozza létre az adatbázist.

A modellosztályokat POCO osztályoknak (a "Plain-Old CLR Objects" kifejezés alapján) nevezzük, mert nem függenek EF Core-tól. Ezek határozzák meg az adatbázisban tárolt adatok tulajdonságait.

Adatmodell hozzáadása

  1. A Megoldáskezelőbenkattintson a jobb gombbal a RazorPagesMovie projektre >>Új mappa hozzáadása. Nevezze el a mappát Models.

  2. Kattintson a jobb gombbal a Models mappára. Válassza >osztályhozzáadása lehetőséget. Nevezze el az osztályt Film.

  3. Adja hozzá a következő tulajdonságokat a Movie osztályhoz:

    using System.ComponentModel.DataAnnotations;
    
    namespace RazorPagesMovie.Models;
    
    public class Movie
    {
        public int Id { get; set; }
        public string? Title { get; set; }
        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string? Genre { get; set; }
        public decimal Price { get; set; }
    }
    

A Movie osztály a következőket tartalmazza:

  • A ID mezőt az adatbázisnak kell megadnia az elsődleges kulcshoz.

  • Egy [DataType] attribútum, amely meghatározza a ReleaseDate tulajdonság adattípusát. Ezzel az attribútummal:

    • A felhasználónak nem kell időadatokat megadnia a dátum mezőben.
    • Csak a dátum jelenik meg, az időadatok nem.
  • Az string utáni kérdőjel azt jelzi, hogy a tulajdonság null értékű. További információért tekintse meg: Null értékű hivatkozástípusok.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

Hozza létre a projektet annak ellenőrzéséhez, hogy nincsenek-e fordítási hibák.

Állványozza fel a filmpéldányt

Ebben a szakaszban a filmmodell keretezett van. Vagyis az állványzati eszköz oldalakat hoz létre a filmmodell létrehozási, olvasási, frissítési és törlési (CRUD) műveleteihez.

  1. Hozza létre a Lapok/filmek mappát:

    1. Kattintson a jobb gombbal a Lapok mappára >>Új mappa hozzáadása.
    2. Nevezze el a mappát Filmek.
  2. Kattintson a jobb gombbal a Lapok/filmek mappára, >>Új állványozott elem hozzáadása.

    Új állványozott elem

  3. Az Új állvány hozzáadása párbeszédpanelen válassza a Razor Lapokat az Entity Framework (CRUD) használatával>hozzáadása lehetőséget.

    Állványzat hozzáadása

  4. Töltse ki a jelölésű, az Entity Framework (CRUD) használatával hozzáadott Razor lapokat a párbeszédpanelen.

    1. A Modellosztály legördülő listában válassza a Film (RazorPagesMovie.Models)lehetőséget.
    2. Az Data context class sorban válassza ki a + (plusz) jelet.
      1. Az Adatkörnyezet hozzáadása párbeszédpanelen létre lesz hozva a RazorPagesMovie.Data.RazorPagesMovieContext osztálynév.
      2. Az Adatbázis-szolgáltató legördülő listában válassza SQL Serverlehetőséget.
    3. Válassza a Hozzáadás lehetőséget.

    Razor lapok hozzáadása

A appsettings.json fájl a helyi adatbázishoz való csatlakozáshoz használt kapcsolati sztringgel frissül.

Warning

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Létrehozott és frissített fájlok

Az állványzati folyamat a következő fájlokat hozza létre:

  • Lapok/filmek: Létrehozás, Törlés, Részletek, Szerkesztés és Indexelés.
  • Data/RazorPagesMovieContext.cs

A létrehozott fájlokat a következő oktatóanyag ismerteti.

Az állványzati folyamat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

A Program.cs módosításait az oktatóanyag későbbi részében ismertetjük.

A kezdeti adatbázisséma létrehozása az EF migrálási funkciójával

Az Entity Framework Core migrálási funkciója a következőket teszi lehetővé:

  • Hozza létre a kezdeti adatbázissémát.
  • Növekményesen frissítse az adatbázissémát, hogy szinkronban maradjon az alkalmazás adatmodelljével. Az adatbázis meglévő adatai megmaradnak.

Ebben a szakaszban a Package Manager Console (PMC) ablak a következőre szolgál:

  • Adjon hozzá egy kezdeti migrációt.
  • Frissítse az adatbázist a kezdeti migrálással.
  1. Az Eszközök menüben válassza a NuGet csomagkezelő>csomagkezelő konzollehetőséget.

    PMC menü

  2. A PMC-ben adja meg a következő parancsokat:

    Add-Migration InitialCreate
    Update-Database
    
  • A Add-Migration parancs létrehoz egy kódot a kezdeti adatbázisséma létrehozásához. A séma a DbContext-ban meghatározott modellen alapul. A InitialCreate argumentum a migrálás elnevezésére szolgál. Bármilyen név használható, de konvenció szerint ki van jelölve egy név, amely leírja az áttelepítést.

  • A Update-Database parancs a Up metódust futtatja a nem alkalmazott migrálásokban. Ebben az esetben a parancs a Up metódust futtatja a Migrations/<time-stamp>_InitialCreate.cs fájlban, amely létrehozza az adatbázist.

A következő figyelmeztetés jelenik meg, amely egy későbbi lépésben lesz kezelve:

Nem adott meg típust a "Movie" entitástípus "Ár" tizedesoszlopához. Ez az értékek csonkolásához vezet, ha nem illeszkednek az alapértelmezett pontossághoz és mértékhez. Explicit módon adja meg azt az SQL Server-oszloptípust, amely a "HasColumnType()" használatával minden értéket el tud fogadni.

Az adatkörnyezet RazorPagesMovieContext:

  • A Microsoft.EntityFrameworkCore.DbContext származik.
  • Meghatározza, hogy mely entitások szerepelnek az adatmodellben.
  • A EF Core modell Movie funkcióit koordinálja, például létrehozást, olvasást, frissítést és törlést.
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!;
    }
}

Az előző kód létrehoz egy DbSet<Movie> tulajdonságot az entitáskészlethez. Az Entity Framework terminológiájában az entitáskészletek általában egy adatbázistáblának felelnek meg. Az entitás a tábla egy sorának felel meg.

A kapcsolati sztring nevét a rendszer egy DbContextOptions objektum metódusának meghívásával adja át a környezetnek. Helyi fejlesztés esetén a konfigurációs rendszer beolvassa a kapcsolati sztringet a appsettings.json fájlból.

Az alkalmazás tesztelése

  1. Futtassa az alkalmazást, és fűzze hozzá /Movies a böngésző URL-címéhez (http://localhost:port/movies).

    Ha a következő hibaüzenet jelenik meg:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Kihagyta a(z) lépést amigráció során.

  2. Tesztelje az Új létrehozása hivatkozást.

    Lap létrehozása

    Note

    Előfordulhat, hogy nem tud tizedesvesszőt beírni a Price mezőbe. Ha támogatni szeretné jQuery-érvényesítési olyan nem angol nyelvű területi beállításokhoz, amelyek vesszőt (",") használnak tizedesvesszőhöz és nem US-English dátumformátumokhoz, az alkalmazást globalizálni kell. A globalizációval kapcsolatos utasításokért tekintse meg a ésGitHub-problémát.

  3. Tesztelje a Szerkesztés, Részletekés Törlés hivatkozásokat.

A következő oktatóanyag az állványzatok által létrehozott fájlokat ismerteti.

A függőséginjektálással regisztrált környezet vizsgálata

ASP.NET Core a függőségek injektálásávalépül. A EF Core adatbázis-környezethez hasonló szolgáltatások függőséginjektálással vannak regisztrálva az alkalmazás indításakor. Az ilyen szolgáltatásokat igénylő összetevők (például Razor Oldalak) konstruktorparamétereken keresztül érhetők el. Az adatbázis-környezetpéldányt lekérő konstruktorkód később jelenik meg az oktatóanyagban.

Az állványzat-kezelő eszköz automatikusan létrehozott egy adatbázis-környezetet, és regisztrálta azt a függőséginjektálási tárolóban. Az állványzat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

Hibaelhárítás a kész mintával

Ha olyan problémába ütközik, amely nem oldható meg, hasonlítsa össze a kódot a befejezett projektel. Befejezett projekt megtekintése vagy letöltése (hogyan lehet letölteni).

Következő lépések

Ebben az oktatóanyagban osztályokat adunk hozzá az adatbázisokban lévő filmek kezeléséhez. Az alkalmazás modellosztályai Entity Framework Core (EF Core) használnak az adatbázis használatához. EF Core egy objektum-relációs leképező (O/RM), amely leegyszerűsíti az adathozzáférést. Először a modellosztályokat írja meg, és EF Core hozza létre az adatbázist.

A modellosztályokat POCO osztályoknak (a "Plain-Old CLR Objects" kifejezés alapján) nevezzük, mert nem függenek EF Core-tól. Ezek határozzák meg az adatbázisban tárolt adatok tulajdonságait.

Adatmodell hozzáadása

  1. A Megoldáskezelőbenkattintson a jobb gombbal a RazorPagesMovie projektre >>Új mappa hozzáadása. Nevezze el a mappát Models.

  2. Kattintson a jobb gombbal a Models mappára. Válassza >osztályhozzáadása lehetőséget. Nevezze el az osztályt Film.

  3. Adja hozzá a következő tulajdonságokat a Movie osztályhoz:

    using System.ComponentModel.DataAnnotations;
    
    namespace RazorPagesMovie.Models
    {
        public class Movie
        {
            public int ID { get; set; }
            public string Title { get; set; } = string.Empty;
    
            [DataType(DataType.Date)]
            public DateTime ReleaseDate { get; set; }
            public string Genre { get; set; } = string.Empty;
            public decimal Price { get; set; }
        }
    }
    

A Movie osztály a következőket tartalmazza:

  • A ID mezőt az adatbázisnak kell megadnia az elsődleges kulcshoz.

  • Egy [DataType] attribútum, amely meghatározza a ReleaseDate tulajdonság adattípusát. Ezzel az attribútummal:

    • A felhasználónak nem kell időadatokat megadnia a dátum mezőben.
    • Csak a dátum jelenik meg, az időadatok nem.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

Hozza létre a projektet annak ellenőrzéséhez, hogy nincsenek-e fordítási hibák.

Állványozza fel a filmpéldányt

Ebben a szakaszban a filmmodell keretezett van. Vagyis az állványzati eszköz oldalakat hoz létre a filmmodell létrehozási, olvasási, frissítési és törlési (CRUD) műveleteihez.

  1. Adja hozzá a NuGet-csomagot Microsoft.EntityFrameworkCore.Design, amely az állványozó eszközhöz szükséges.

    1. Az Eszközök menüben válassza NuGet Package Manager>Megoldáshoz készült NuGet-csomagok kezeléseNuGet-csomagkezelő –
    2. Válassza a Tallózás lapot.
    3. Írja be Microsoft.EntityFrameworkCore.Design, és válassza ki a listából.
    4. Ellenőrizze Project, majd válassza a Telepítés lehetőséget
    5. Válassza Elfogadom lehetőséget a Licencelfogadási párbeszédpanelen. NuGet Package Manager – csomag hozzáadása
  2. Hozza létre a Lapok/filmek mappát:

    1. Kattintson a jobb gombbal a Lapok mappára >>Új mappa hozzáadása.
    2. Nevezze el a mappát Filmek.
  3. Kattintson a jobb gombbal a Lapok/filmek mappára, >>Új állványozott elem hozzáadása.

    Új állványozott elem

  4. Az Új állvány hozzáadása párbeszédpanelen válassza a Razor Lapokat az Entity Framework (CRUD) használatával>hozzáadása lehetőséget.

    Állványzat hozzáadása

  5. Töltse ki a jelölésű, az Entity Framework (CRUD) használatával hozzáadott Razor lapokat a párbeszédpanelen.

    1. A Modellosztály legördülő listában válassza a Film (RazorPagesMovie.Models)lehetőséget.
    2. Az Data context class sorban válassza ki a + (plusz) jelet.
      1. Az Adatkörnyezet hozzáadása párbeszédpanelen létre lesz hozva a RazorPagesMovie.Data.RazorPagesMovieContext osztálynév.
    3. Válassza a Hozzáadás lehetőséget.

    Razor lapok hozzáadása

    Ha hibaüzenet jelenik meg, amely szerint telepítenie kell a Microsoft.EntityFrameworkCore.SqlServer csomagot, ismételje meg a lépéseket az >Új állványozott elem hozzáadásalépésekkel kezdve.

A appsettings.json fájl a helyi adatbázishoz való csatlakozáshoz használt kapcsolati sztringgel frissül.

Warning

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Létrehozott és frissített fájlok

Az állványzati folyamat a következő fájlokat hozza létre:

  • Lapok/filmek: Létrehozás, Törlés, Részletek, Szerkesztés és Indexelés.
  • Data/RazorPagesMovieContext.cs

A létrehozott fájlokat a következő oktatóanyag ismerteti.

Az állványzati folyamat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

A Program.cs módosításait az oktatóanyag későbbi részében ismertetjük.

A kezdeti adatbázisséma létrehozása az EF migrálási funkciójával

Az Entity Framework Core migrálási funkciója a következőket teszi lehetővé:

  • Hozza létre a kezdeti adatbázissémát.
  • Növekményesen frissítse az adatbázissémát, hogy szinkronban maradjon az alkalmazás adatmodelljével. Az adatbázis meglévő adatai megmaradnak.

Ebben a szakaszban a Package Manager Console (PMC) ablak a következőre szolgál:

  • Adjon hozzá egy kezdeti migrációt.
  • Frissítse az adatbázist a kezdeti migrálással.
  1. Az Eszközök menüben válassza a NuGet csomagkezelő>csomagkezelő konzollehetőséget.

    PMC menü

  2. A PMC-ben adja meg a következő parancsokat:

    Add-Migration InitialCreate
    Update-Database
    
    

Az előző parancsok telepítik az Entity Framework Core-eszközöket, és futtassa a migrations parancsot a kezdeti adatbázisséma létrehozásához.

A következő figyelmeztetés jelenik meg, amely egy későbbi lépésben lesz kezelve:

Nem adott meg típust a "Movie" entitástípus "Ár" tizedesoszlopához. Ez az értékek csonkolásához vezet, ha nem illeszkednek az alapértelmezett pontossághoz és mértékhez. Explicit módon adja meg azt az SQL Server-oszloptípust, amely a "HasColumnType()" használatával minden értéket el tud fogadni.

A migrations parancs létrehoz egy kódot a kezdeti adatbázisséma létrehozásához. A séma a DbContext-ban meghatározott modellen alapul. A InitialCreate argumentum az áttelepítések elnevezésére szolgál. Bármilyen név használható, de konvenció szerint ki van jelölve egy név, amely leírja az áttelepítést.

A update parancs a Up metódust futtatja a nem alkalmazott migrálásokban. Ebben az esetben update futtatja a Up metódust a Migrations/<time-stamp>_InitialCreate.cs fájlban, amely létrehozza az adatbázist.

A függőséginjektálással regisztrált környezet vizsgálata

ASP.NET Core a függőségek injektálásávalépül. A EF Core adatbázis-környezethez hasonló szolgáltatások függőséginjektálással vannak regisztrálva az alkalmazás indításakor. Az ilyen szolgáltatásokat igénylő összetevők (például Razor Oldalak) konstruktorparamétereken keresztül érhetők el. Az adatbázis-környezetpéldányt lekérő konstruktorkód később jelenik meg az oktatóanyagban.

Az állványzat-kezelő eszköz automatikusan létrehozott egy adatbázis-környezetet, és regisztrálta azt a függőséginjektálási tárolóban. Az állványzat a következő kiemelt kódot adja hozzá a Program.cs fájlhoz:

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();

Az adatkörnyezet RazorPagesMovieContext:

  • A Microsoft.EntityFrameworkCore.DbContext származik.
  • Meghatározza, hogy mely entitások szerepelnek az adatmodellben.
  • A EF Core modell Movie funkcióit koordinálja, például létrehozást, olvasást, frissítést és törlést.
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; }
    }
}

Az előző kód létrehoz egy DbSet<Movie> tulajdonságot az entitáskészlethez. Az Entity Framework terminológiájában az entitáskészletek általában egy adatbázistáblának felelnek meg. Az entitás a tábla egy sorának felel meg.

A kapcsolati sztring nevét a rendszer egy DbContextOptions objektum metódusának meghívásával adja át a környezetnek. Helyi fejlesztés esetén a konfigurációs rendszer beolvassa a kapcsolati sztringet a appsettings.json fájlból.

Az alkalmazás tesztelése

  1. Futtassa az alkalmazást, és fűzze hozzá /Movies a böngésző URL-címéhez (http://localhost:port/movies).

    Ha a következő hibaüzenet jelenik meg:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Kihagyta a(z) lépést amigráció során.

  2. Tesztelje az Új létrehozása hivatkozást.

    Lap létrehozása

    Note

    Előfordulhat, hogy nem tud tizedesvesszőt beírni a Price mezőbe. Ha támogatni szeretné jQuery-érvényesítési olyan nem angol nyelvű területi beállításokhoz, amelyek vesszőt (",") használnak tizedesvesszőhöz és nem US-English dátumformátumokhoz, az alkalmazást globalizálni kell. A globalizációval kapcsolatos utasításokért tekintse meg a ésGitHub-problémát.

  3. Tesztelje a Szerkesztés, Részletekés Törlés hivatkozásokat.

A következő oktatóanyag az állványzatok által létrehozott fájlokat ismerteti.

Hibaelhárítás a kész mintával

Ha olyan problémába ütközik, amely nem oldható meg, hasonlítsa össze a kódot a befejezett projektel. Befejezett projekt megtekintése vagy letöltése (hogyan lehet letölteni).

Következő lépések

Ebben a szakaszban osztályokat adunk hozzá az adatbázisokban lévő filmek kezeléséhez. Az alkalmazás modellosztályai Entity Framework Core (EF Core) használnak az adatbázis használatához. EF Core egy objektum-relációs leképező (O/RM), amely leegyszerűsíti az adathozzáférést. Először a modellosztályokat írja meg, és EF Core hozza létre az adatbázist.

A modellosztályokat POCO osztályoknak (a "Plain-Old CLR Objects" kifejezés alapján) nevezzük, mert nem függenek EF Core-tól. Ezek határozzák meg az adatbázisban tárolt adatok tulajdonságait.

Mintakód megtekintése vagy letöltése (letöltése).

Adatmodell hozzáadása

  1. A Megoldáskezelőbenkattintson a jobb gombbal a RazorPagesMovie projektre >>Új mappa hozzáadása. Nevezze el a mappát Models.

  2. Kattintson a jobb gombbal a Models mappára. Válassza >osztályhozzáadása lehetőséget. Nevezze el az osztályt Film.

  3. Adja hozzá a következő tulajdonságokat a Movie osztályhoz:

    using System;
    using System.ComponentModel.DataAnnotations;
    
    namespace RazorPagesMovie.Models
    {
        public class Movie
        {
            public int ID { get; set; }
            public string Title { get; set; }
    
            [DataType(DataType.Date)]
            public DateTime ReleaseDate { get; set; }
            public string Genre { get; set; }
            public decimal Price { get; set; }
        }
    }
    

A Movie osztály a következőket tartalmazza:

  • A ID mezőt az adatbázisnak kell megadnia az elsődleges kulcshoz.

  • [DataType(DataType.Date)]: Az [DataType] attribútum határozza meg az adatok típusát (Date). Ezzel az attribútummal:

    • A felhasználónak nem kell időadatokat megadnia a dátum mezőben.
    • Csak a dátum jelenik meg, az időadatok nem.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

Hozza létre a projektet annak ellenőrzéséhez, hogy nincsenek-e fordítási hibák.

Állványozza fel a filmpéldányt

Ebben a szakaszban a filmmodell keretezett van. Vagyis az állványzati eszköz oldalakat hoz létre a filmmodell létrehozási, olvasási, frissítési és törlési (CRUD) műveleteihez.

  1. Hozzon létre egy Pages/Movies mappát:

    1. Kattintson a jobb gombbal a Lapok mappára >>Új mappa hozzáadása.
    2. Nevezze el a mappát Filmek.
  2. Kattintson a jobb gombbal a Lapok/filmek mappára, >>Új állványozott elem hozzáadása.

    Új állványozott elem

  3. Az Scaffold hozzáadása párbeszédpanelen válassza az Razor Oldalak az Entity Framework (CRUD) használatával lehetőséget, majd válassza a>hozzáadása gombot.

    Állványzat hozzáadása

  4. Töltse ki a jelölésű, az Entity Framework (CRUD) használatával hozzáadott Razor lapokat a párbeszédpanelen.

    1. A Modellosztály legördülő listában válassza a Film (RazorPagesMovie.Models)lehetőséget.
    2. Az Data context class sorban válassza ki a + (plusz) jelet.
      1. Az Adatkörnyezet hozzáadása párbeszédpanelen létre lesz hozva a RazorPagesMovie.Data.RazorPagesMovieContext osztálynév.
    3. Válassza a Hozzáadás lehetőséget.

    Razor lapok hozzáadása

A appsettings.json fájl a helyi adatbázishoz való csatlakozáshoz használt kapcsolati sztringgel frissül.

Warning

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Létrehozott és frissített fájlok

Az állványzati folyamat a következő fájlokat hozza létre:

  • Lapok/filmek: Létrehozás, Törlés, Részletek, Szerkesztés és Indexelés.
  • Data/RazorPagesMovieContext.cs

Frissített fájlok

  • Startup.cs

A létrehozott és frissített fájlokat a következő szakaszban ismertetjük.

A kezdeti adatbázisséma létrehozása az EF migrálási funkciójával

Az Entity Framework Core migrálási funkciója a következőket teszi lehetővé:

  • Hozza létre a kezdeti adatbázissémát.
  • Növekményesen frissítse az adatbázissémát, hogy szinkronban maradjon az alkalmazás adatmodelljével. Az adatbázis meglévő adatai megmaradnak.

Ebben a szakaszban a Package Manager Console (PMC) ablak a következőre szolgál:

  • Adjon hozzá egy kezdeti migrációt.
  • Frissítse az adatbázist a kezdeti migrálással.
  1. Az Eszközök menüben válassza a NuGet csomagkezelő>csomagkezelő konzollehetőséget.

    PMC menü

  2. A PMC-ben adja meg a következő parancsokat:

    Add-Migration InitialCreate
    Update-Database
    

Az SQL Server esetében az előző parancsok a következő figyelmeztetést generálják: "Nincs típus megadva a "Film" entitástípus "Price" tizedesoszlopához. Ez az értékek csonkolásához vezet, ha nem illeszkednek az alapértelmezett pontossághoz és mértékhez. Explicit módon adja meg azt az SQL Server-oszloptípust, amely a HasColumnType()" használatával minden értéket el tud fogadni."

Hagyja figyelmen kívül a figyelmeztetést, mert az egy későbbi lépésben lesz kezelve.

A migrations parancs létrehoz egy kódot a kezdeti adatbázisséma létrehozásához. A séma a DbContext-ban meghatározott modellen alapul. A InitialCreate argumentum az áttelepítések elnevezésére szolgál. Bármilyen név használható, de konvenció szerint ki van jelölve egy név, amely leírja az áttelepítést.

A update parancs a Up metódust futtatja a nem alkalmazott migrálásokban. Ebben az esetben update futtatja a Up metódust a Migrations/<time-stamp>_InitialCreate.cs fájlban, amely létrehozza az adatbázist.

A függőséginjektálással regisztrált környezet vizsgálata

ASP.NET Core a függőségek injektálásávalépül. A EF Core adatbázis-környezethez hasonló szolgáltatások függőséginjektálással vannak regisztrálva az alkalmazás indításakor. Az ilyen szolgáltatásokat igénylő összetevők (például Razor Oldalak) konstruktorparamétereken keresztül érhetők el. Az adatbázis-környezetpéldányt lekérő konstruktorkód később jelenik meg az oktatóanyagban.

Az állványzat-kezelő eszköz automatikusan létrehozott egy adatbázis-környezetet, és regisztrálta azt a függőséginjektálási tárolóban.

Vizsgálja meg a Startup.ConfigureServices metódust. A kiemelt sort az állványzat adta hozzá:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

A RazorPagesMovieContext koordinálja a EF Core modell Movie funkcióit, például a létrehozást, olvasást, frissítést és törlést. Az adatkörnyezet (RazorPagesMovieContext) a Microsoft.EntityFrameworkCore.DbContext származik. Az adatkörnyezet határozza meg, hogy mely entitások szerepelnek az adatmodellben.

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; }
    }
}

Az előző kód létrehoz egy DbSet<Movie> tulajdonságot az entitáskészlethez. Az Entity Framework terminológiájában az entitáskészletek általában egy adatbázistáblának felelnek meg. Az entitás a tábla egy sorának felel meg.

A kapcsolati sztring nevét a rendszer egy DbContextOptions objektum metódusának meghívásával adja át a környezetnek. Helyi fejlesztés esetén a konfigurációs rendszer beolvassa a kapcsolati sztringet a appsettings.json fájlból.

Az alkalmazás tesztelése

  1. Futtassa az alkalmazást, és fűzze hozzá /Movies a böngésző URL-címéhez (http://localhost:port/movies).

    Ha a következő hibaüzenet jelenik meg:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    Kihagyta a(z) lépést amigráció során.

  2. Tesztelje a létrehozása hivatkozást.

    Lap létrehozása

    Note

    Előfordulhat, hogy nem tud tizedesvesszőt beírni a Price mezőbe. Ha támogatni szeretné jQuery-érvényesítési olyan nem angol nyelvű területi beállításokhoz, amelyek vesszőt (",") használnak tizedesvesszőhöz és nem US-English dátumformátumokhoz, az alkalmazást globalizálni kell. A globalizációval kapcsolatos utasításokért tekintse meg a ésGitHub-problémát.

  3. Tesztelje a Szerkesztés, Részletekés Törlés hivatkozásokat.

Az SQL-naplózás az Entity Framework Core-ban

A naplózási konfigurációt általában a Logging fájlok appsettings.{Environment}.json szakasza biztosítja. SQL-utasítások naplózásához adja hozzá "Microsoft.EntityFrameworkCore.Database.Command": "Information" a appsettings.Development.json fájlhoz:

{
  "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": "*"
}

Az előző JSON esetén az SQL-utasítások megjelennek a parancssorban és a Visual Studio kimeneti ablakában.

További információ: Naplózás a .NET-ben és ASP.NET Core-ban , valamint ez a GitHub-probléma.

A következő oktatóanyag az állványzatok által létrehozott fájlokat ismerteti.

Következő lépések

Ebben a szakaszban osztályok jelennek meg a filmek kezeléséhez. Az alkalmazás modellosztályai Entity Framework Core (EF Core) használnak az adatbázis használatához. EF Core egy objektum-relációs leképező (O/RM), amely leegyszerűsíti az adathozzáférést.

A modellosztályok POCO-osztályoknak (egyszerű régi CLR-objektumokból) ismertek, mert nem függenek EF Core. Ezek határozzák meg az adatbázisban tárolt adatok tulajdonságait.

Mintakód megtekintése vagy letöltése (letöltése).

Warning

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Adatmodell hozzáadása

Kattintson a jobb gombbal a RazorPagesMovie projektre >>Új mappa hozzáadása. Nevezze el a mappát Models.

Kattintson a jobb gombbal a Models mappára. Válassza >osztályhozzáadása lehetőséget. Nevezze el az osztályt Film.

Adja hozzá a következő tulajdonságokat a Movie osztályhoz:

using System;
using System.ComponentModel.DataAnnotations;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

A Movie osztály a következőket tartalmazza:

  • A ID mezőt az adatbázisnak kell megadnia az elsődleges kulcshoz.

  • [DataType(DataType.Date)]: A DataType attribútum az adatok típusát (Date) adja meg. Ezzel az attribútummal:

    • A felhasználónak nem kell időadatokat megadnia a dátum mezőben.
    • Csak a dátum jelenik meg, az időadatok nem.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

A DataAnnotations egy későbbi oktatóanyagban kerülnek tárgyalásra.

Hozza létre a projektet annak ellenőrzéséhez, hogy nincsenek-e fordítási hibák.

Állványozza fel a filmpéldányt

Ebben a szakaszban a filmmodell keretezett van. Vagyis az állványzati eszköz oldalakat hoz létre a filmmodell létrehozási, olvasási, frissítési és törlési (CRUD) műveleteihez.

Hozzon létre egy Pages/Movies mappát:

  • Kattintson a jobb gombbal a Lapok mappára >>Új mappa hozzáadása.
  • Nevezze el a mappát Filmek.

Kattintson a jobb gombbal a Lapok/filmek mappára, >>Új állványozott elem hozzáadása.

Új Scaffolded elem a VScode-ban

Az Scaffold hozzáadása párbeszédpanelen válassza az Razor Oldalak az Entity Framework (CRUD) használatával lehetőséget, majd válassza a>hozzáadása gombot.

Scaffold hozzáadása VScode-

Töltse ki a jelölésű, az Entity Framework (CRUD) használatával hozzáadott Razor lapokat a párbeszédpanelen.

  • A Modellosztály legördülő listában válassza a Film (RazorPagesMovie.Models)lehetőséget.
  • Az Data context class sorban válassza ki a + (plusz) jelet, és módosítsa a létrehozott nevet a RazorPagesMovie.Models.RazorPagesMovieContext-ről a RazorPagesMovie.Data.RazorPagesMovieContext-re. Ez a módosítás nem szükséges. Létrehozza az adatbázis környezeti osztályát a megfelelő névtérrel.
  • Válassza a Hozzáadás lehetőséget.

Razor lapok hozzáadása VScode-

A appsettings.json fájl a helyi adatbázishoz való csatlakozáshoz használt kapcsolati sztringgel frissül.

Létrehozott fájlok

Az állványzati folyamat a következő fájlokat hozza létre és frissíti:

  • Lapok/filmek: Létrehozás, Törlés, Részletek, Szerkesztés és Indexelés.
  • Data/RazorPagesMovieContext.cs

Updated

  • Startup.cs

A létrehozott és frissített fájlokat a következő szakaszban ismertetjük.

Kezdeti migrálás

Ebben a szakaszban a Package Manager-konzol (PMC) a következőre szolgál:

  • Adjon hozzá egy kezdeti migrációt.
  • Frissítse az adatbázist a kezdeti migrálással.

Az Eszközök menüben válassza a NuGet csomagkezelő>csomagkezelő konzollehetőséget.

PMC menü

A PMC-ben adja meg a következő parancsokat:

Add-Migration InitialCreate
Update-Database

Az előző parancsok a következő figyelmeztetést generálják: "Nincs típus megadva a "Film" entitástípus "Price" tizedesoszlopához. Ez az értékek csonkolásához vezet, ha nem illeszkednek az alapértelmezett pontossághoz és mértékhez. Explicit módon adja meg azt az SQL Server-oszloptípust, amely a HasColumnType()" használatával minden értéket el tud fogadni."

Hagyja figyelmen kívül a figyelmeztetést, mert az egy későbbi lépésben lesz kezelve.

A migrálási parancs létrehoz egy kódot a kezdeti adatbázisséma létrehozásához. A séma a DbContext-ban meghatározott modellen alapul. A InitialCreate argumentum az áttelepítések elnevezésére szolgál. Bármilyen név használható, de konvenció szerint ki van jelölve egy név, amely leírja az áttelepítést.

A update parancs a Up metódust futtatja a nem alkalmazott migrálásokban. Ebben az esetben update futtatja a Up metódust Migrations/<time-stamp>_InitialCreate.cs fájlban, amely létrehozza az adatbázist.

A függőséginjektálással regisztrált környezet vizsgálata

ASP.NET Core a függőségek injektálásávalépül. A EF Core adatbázis-környezethez hasonló szolgáltatások függőséginjektálással vannak regisztrálva az alkalmazás indításakor. Az ilyen szolgáltatásokat igénylő összetevők( például Razor Oldalak) konstruktorparamétereken keresztül érhetők el. Az adatbázis-környezetpéldányt lekérő konstruktorkód később jelenik meg az oktatóanyagban.

Az állványzat-kezelő eszköz automatikusan létrehozott egy adatbázis-környezetet, és regisztrálta azt a függőséginjektálási tárolóban.

Vizsgálja meg a Startup.ConfigureServices metódust. A kiemelt sort az állványzat adta hozzá:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

A RazorPagesMovieContext koordinálja a EF Core modell Movie funkcióit, például a létrehozást, olvasást, frissítést és törlést. Az adatkörnyezet (RazorPagesMovieContext) a Microsoft.EntityFrameworkCore.DbContext származik. Az adatkörnyezet határozza meg, hogy mely entitások szerepelnek az adatmodellben.

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; }
    }
}

Az előző kód létrehoz egy DbSet<Movie> tulajdonságot az entitáskészlethez. Az Entity Framework terminológiájában az entitáskészletek általában egy adatbázistáblának felelnek meg. Az entitás a tábla egy sorának felel meg.

A kapcsolati sztring nevét a rendszer egy DbContextOptions objektum metódusának meghívásával adja át a környezetnek. Helyi fejlesztés esetén a konfigurációs rendszer beolvassa a kapcsolati sztringet a appsettings.json fájlból.

Az alkalmazás tesztelése

  • Futtassa az alkalmazást, és fűzze hozzá /Movies a böngésző URL-címéhez (http://localhost:port/movies).

Ha a következő hibaüzenet jelenik meg:

SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.

Kihagyta a(z) lépést amigráció során.

  • Tesztelje a létrehozása hivatkozást.

    Lap létrehozása

    Note

    Előfordulhat, hogy nem tud tizedesvesszőt beírni a Price mezőbe. Ha támogatni szeretné jQuery-érvényesítési olyan nem angol nyelvű területi beállításokhoz, amelyek vesszőt (",") használnak tizedesvesszőhöz és nem US-English dátumformátumokhoz, az alkalmazást globalizálni kell. A globalizációval kapcsolatos utasításokért tekintse meg a ésGitHub-problémát.

  • Tesztelje a Szerkesztés, Részletekés Törlés hivatkozásokat.

A következő oktatóanyag az állványzatok által létrehozott fájlokat ismerteti.

Következő lépések