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


5. rész: Adatbázis használata egy ASP.NET Core MVC-alkalmazásban

Jegyzet

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

Figyelmeztetés

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ásról a cikk .NET 9-es verziójábantalál információt.

Által Rick Anderson és Jon P Smith.

Bevezetés

Az oktatóanyag-sorozat ezen része az SQL-adatbázis ASP.NET Core MVC-alkalmazásban való használatával foglalkozik.

A következő témákkal fog megismerkedni:

  • Regisztrálja és konfigurálja az Entity Framework Core adatbáziskörnyezetét a ASP.NET Core MVC-alkalmazáshoz.
  • Helyi fejlesztés során dolgozzon adatbázis-kapcsolati sztringekkel.
  • Az SQL Server Express LocalDB használatával fejlesztheti és megvizsgálhatja az adatbázist és az adatokat az SQL Server Object Explorerrel.
  • Az adatbázis üzembe helyezése kezdeti mintaadatokkal.

Előfeltétel

Ez az oktatóanyag az előző lépésben beállított adatbázist használja: 4. rész, modell hozzáadása egy ASP.NET Core MVC-alkalmazáshoz.

Az adatbázis-környezet használata

A MvcMovieContext objektum kezeli az adatbázishoz való csatlakozás és Movie objektumok adatbázisrekordokhoz való leképezésének feladatát. Az adatbázis-környezet regisztrálva van a fájl Program.cs tárolójában:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));

A ASP.NET Core Configuration rendszer beolvassa a ConnectionString kulcsot. Helyi fejlesztés esetén lekéri a kapcsolati karakterláncot a appsettings.json fájlból:

"ConnectionStrings": {
  "MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}

Figyelmeztetés

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Éles alkalmazások esetén a legbiztonságosabb elérhető hitelesítési folyamatot kell használni. 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.

SQL Server Express LocalDB (helyi adatbáziskezelő szoftver)

LocalDB:

  • Az SQL Server Express Database Engine egyszerűsített verziója, amely alapértelmezés szerint telepítve van a Visual Studióval.
  • Igény szerint elindul egy kapcsolati karakterlánc használatával.
  • A programfejlesztésre van megcélzva. Felhasználói módban fut, így nincs összetett konfiguráció.
  • Alapértelmezés szerint .mdf fájlokat hoz létre a C:/Users/{user} könyvtárban.

Az adatbázis vizsgálata

A Nézet menüben nyissa meg SQL Server Object Explorer (SSOX).

Kattintson a jobb gombbal a Movie táblára (dbo.Movie) > Nézettervező

kattintson a jobb gombbal a Mozgókép táblára > Nézettervezőre.

Film táblázat meg van nyitva a Tervező

Figyelje meg a IDmelletti kulcsikont. Alapértelmezés szerint az EF egy ID nevű tulajdonságot készít az elsődleges kulcsból.

Kattintson a jobb gombbal a Movie táblára > Adatok megtekintése

Kattintson a jobb gombbal a Mozgókép táblára > Adatok megtekintése parancsra.

Filmtábla megnyitva, megjelenítve a táblaadatok

Az adatbázis üzembe helyezése

Hozzon létre egy SeedData nevű új osztályt a Modellek mappában. Cserélje le a létrehozott kódot a következőre:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;

namespace MvcMovie.Models;

public static class SeedData
{
    public static void Initialize(IServiceProvider serviceProvider)
    {
        using (var context = new MvcMovieContext(
            serviceProvider.GetRequiredService<
                DbContextOptions<MvcMovieContext>>()))
        {
            // Look for any movies.
            if (context.Movie.Any())
            {
                return;   // DB has been seeded
            }
            context.Movie.AddRange(
                new Movie
                {
                    Title = "When Harry Met Sally",
                    ReleaseDate = DateTime.Parse("1989-2-12"),
                    Genre = "Romantic Comedy",
                    Price = 7.99M
                },
                new Movie
                {
                    Title = "Ghostbusters ",
                    ReleaseDate = DateTime.Parse("1984-3-13"),
                    Genre = "Comedy",
                    Price = 8.99M
                },
                new Movie
                {
                    Title = "Ghostbusters 2",
                    ReleaseDate = DateTime.Parse("1986-2-23"),
                    Genre = "Comedy",
                    Price = 9.99M
                },
                new Movie
                {
                    Title = "Rio Bravo",
                    ReleaseDate = DateTime.Parse("1959-4-15"),
                    Genre = "Western",
                    Price = 3.99M
                }
            );
            context.SaveChanges();
        }
    }
}

Ha az adatbázisban vannak filmek, a kezdőérték inicializáló visszatér, és nem adódik hozzá új film.

if (context.Movie.Any())
{
    return;  // DB has been seeded.
}

Add meg a mag inicializálót

Cserélje le a Program.cs tartalmát a következő kódra. Az új kód ki van emelve.

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    SeedData.Initialize(services);
}

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();

app.MapStaticAssets();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

Törölje az adatbázis összes rekordjait. Ezt a böngészőben vagy az SSOX-ban található törlési hivatkozásokkal teheti meg.

Tesztelje az alkalmazást. Kényszerítse az alkalmazást az inicializálásra, és hívja meg a kódot a Program.cs fájlban, így a kezdő metódus fut. Az inicializálás kényszerítéséhez zárja be a Visual Studio által megnyitott parancssori ablakot, és indítsa újra a Ctrl+F5 billentyűkombinációt.

Az alkalmazás megjeleníti a beszúrt adatokat.

MVC Movie alkalmazás meg van nyitva a Microsoft Edge-ben, és megjeleníti a filmadatokat

Bevezetés

Az oktatóanyag-sorozat ezen része az SQL-adatbázis ASP.NET Core MVC-alkalmazásban való használatával foglalkozik.

A következő témákkal fog megismerkedni:

  • Regisztrálja és konfigurálja az Entity Framework Core adatbáziskörnyezetét a ASP.NET Core MVC-alkalmazáshoz.
  • Adatbázis-kapcsolati sztringekkel való munka helyi fejlesztés során.
  • Az SQL Server Express LocalDB használatával fejlesztheti és megvizsgálhatja az adatbázist és az adatokat az SQL Server Object Explorerrel.
  • Az adatbázis betöltése kezdeti mintaadatokkal.

Előfeltétel

Ez az oktatóanyag az előző lépésben beállított adatbázist használja: 4. rész, modell hozzáadása egy ASP.NET Core MVC-alkalmazáshoz.

Az adatbázis-környezet használata

A MvcMovieContext objektum kezeli az adatbázishoz való csatlakozás és Movie objektumok adatbázisrekordokhoz való leképezésének feladatát. Az adatbázis-környezet regisztrálva van a fájl Program.cs tárolójában:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));

A ASP.NET Core Configuration rendszer beolvassa a ConnectionString kulcsot. Helyi fejlesztés esetén lekéri a kapcsolati karakterláncot a appsettings.json fájlból:

"ConnectionStrings": {
  "MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}

Figyelmeztetés

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Éles alkalmazások esetén a legbiztonságosabb elérhető hitelesítési folyamatot kell használni. 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.

SQL Server Express LocalDB (helyi adatbáziskezelő szoftver)

LocalDB:

  • Az SQL Server Express Database Engine egyszerűsített verziója, amely alapértelmezés szerint telepítve van a Visual Studióval.
  • Igény szerint elindul egy kapcsolati karakterlánc használatával.
  • A programfejlesztésre van megcélzva. Felhasználói módban fut, így nincs összetett konfiguráció.
  • Alapértelmezés szerint .mdf fájlokat hoz létre a C:/Users/{user} könyvtárban.

Az adatbázis vizsgálata

A Nézet menüben nyissa meg SQL Server Object Explorer (SSOX).

Kattintson a jobb gombbal a Movie táblára (dbo.Movie) > Nézettervező

kattintson a jobb gombbal a Mozgókép táblára > Nézettervezőre.

Film táblázat meg van nyitva a Tervező

Figyelje meg a IDmelletti kulcsikont. Alapértelmezés szerint az EF egy ID nevű tulajdonságot készít az elsődleges kulcsból.

Kattintson a jobb gombbal a Movie táblára > Adatok megtekintése

Kattintson a jobb gombbal a Mozgókép táblára > Adatok megtekintése parancsra.

Filmtábla megnyitva, megjelenítve a táblaadatok

Az adatbázis üzembe helyezése

Hozzon létre egy SeedData nevű új osztályt a Modellek mappában. Cserélje le a létrehozott kódot a következőre:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;

namespace MvcMovie.Models;

public static class SeedData
{
    public static void Initialize(IServiceProvider serviceProvider)
    {
        using (var context = new MvcMovieContext(
            serviceProvider.GetRequiredService<
                DbContextOptions<MvcMovieContext>>()))
        {
            // Look for any movies.
            if (context.Movie.Any())
            {
                return;   // DB has been seeded
            }
            context.Movie.AddRange(
                new Movie
                {
                    Title = "When Harry Met Sally",
                    ReleaseDate = DateTime.Parse("1989-2-12"),
                    Genre = "Romantic Comedy",
                    Price = 7.99M
                },
                new Movie
                {
                    Title = "Ghostbusters ",
                    ReleaseDate = DateTime.Parse("1984-3-13"),
                    Genre = "Comedy",
                    Price = 8.99M
                },
                new Movie
                {
                    Title = "Ghostbusters 2",
                    ReleaseDate = DateTime.Parse("1986-2-23"),
                    Genre = "Comedy",
                    Price = 9.99M
                },
                new Movie
                {
                    Title = "Rio Bravo",
                    ReleaseDate = DateTime.Parse("1959-4-15"),
                    Genre = "Western",
                    Price = 3.99M
                }
            );
            context.SaveChanges();
        }
    }
}

Ha az adatbázisban vannak filmek, a kezdőérték inicializáló visszatér, és nem adódik hozzá új film.

if (context.Movie.Any())
{
    return;  // DB has been seeded.
}

Add meg a mag inicializálót

Cserélje le a Program.cs tartalmát a következő kódra. Az új kód ki van emelve.

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    SeedData.Initialize(services);
}

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

Törölje az adatbázis összes rekordjait. Ezt a böngészőben vagy az SSOX-ban található törlési hivatkozásokkal teheti meg.

Tesztelje az alkalmazást. Kényszerítse az alkalmazást az inicializálásra, és hívja meg a kódot a Program.cs fájlban, így a kezdő metódus fut. Az inicializálás kényszerítéséhez zárja be a Visual Studio által megnyitott parancssori ablakot, és indítsa újra a Ctrl+F5 billentyűkombinációt.

Az alkalmazás megjeleníti a beszúrt adatokat.

MVC Movie alkalmazás meg van nyitva a Microsoft Edge-ben, és megjeleníti a filmadatokat

Bevezetés

Az oktatóanyag-sorozat ezen része az SQL-adatbázis ASP.NET Core MVC-alkalmazásban való használatával foglalkozik.

A következő témákkal fog megismerkedni:

  • Regisztrálja és konfigurálja az Entity Framework Core adatbáziskörnyezetét a ASP.NET Core MVC-alkalmazáshoz.
  • Dolgozzon helyi fejlesztés során használt adatbázis-kapcsolati sztringekkel.
  • Az SQL Server Express LocalDB használatával fejlesztheti és megvizsgálhatja az adatbázist és az adatokat az SQL Server Object Explorerrel.
  • Az adatbázis kezdeti mintaadatokkal való feltöltése.

Előfeltétel

Ez az oktatóanyag az előző lépésben beállított adatbázist használja: 4. rész, modell hozzáadása egy ASP.NET Core MVC-alkalmazáshoz.

Az adatbázis-környezet használata

A MvcMovieContext objektum kezeli az adatbázishoz való csatlakozás és Movie objektumok adatbázisrekordokhoz való leképezésének feladatát. Az adatbázis-környezet regisztrálva van a fájl Program.cs tárolójában:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));

A ASP.NET Core Configuration rendszer beolvassa a ConnectionString kulcsot. Helyi fejlesztés esetén lekéri a kapcsolati karakterláncot a appsettings.json fájlból:

"ConnectionStrings": {
  "MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}

Figyelmeztetés

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Éles alkalmazások esetén a legbiztonságosabb elérhető hitelesítési folyamatot kell használni. 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.

SQL Server Express LocalDB (helyi adatbáziskezelő szoftver)

LocalDB:

  • Az SQL Server Express Database Engine egyszerűsített verziója, amely alapértelmezés szerint telepítve van a Visual Studióval.
  • Igény szerint elindul egy kapcsolati karakterlánc használatával.
  • A programfejlesztésre van megcélzva. Felhasználói módban fut, így nincs összetett konfiguráció.
  • Alapértelmezés szerint .mdf fájlokat hoz létre a C:/Users/{user} könyvtárban.

Az adatbázis vizsgálata

A Nézet menüben nyissa meg SQL Server Object Explorer (SSOX).

Kattintson a jobb gombbal a Movie táblára (dbo.Movie) > Nézettervező

kattintson a jobb gombbal a Mozgókép táblára > Nézettervezőre.

Film táblázat meg van nyitva a Tervező

Figyelje meg a IDmelletti kulcsikont. Alapértelmezés szerint az EF egy ID nevű tulajdonságot készít az elsődleges kulcsból.

Kattintson a jobb gombbal a Movie táblára > Adatok megtekintése

Kattintson a jobb gombbal a Mozgókép táblára > Adatok megtekintése parancsra.

Filmtábla megnyitva, megjelenítve a táblaadatok

Az adatbázis üzembe helyezése

Hozzon létre egy SeedData nevű új osztályt a Modellek mappában. Cserélje le a létrehozott kódot a következőre:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;

namespace MvcMovie.Models;

public static class SeedData
{
    public static void Initialize(IServiceProvider serviceProvider)
    {
        using (var context = new MvcMovieContext(
            serviceProvider.GetRequiredService<
                DbContextOptions<MvcMovieContext>>()))
        {
            // Look for any movies.
            if (context.Movie.Any())
            {
                return;   // DB has been seeded
            }
            context.Movie.AddRange(
                new Movie
                {
                    Title = "When Harry Met Sally",
                    ReleaseDate = DateTime.Parse("1989-2-12"),
                    Genre = "Romantic Comedy",
                    Price = 7.99M
                },
                new Movie
                {
                    Title = "Ghostbusters ",
                    ReleaseDate = DateTime.Parse("1984-3-13"),
                    Genre = "Comedy",
                    Price = 8.99M
                },
                new Movie
                {
                    Title = "Ghostbusters 2",
                    ReleaseDate = DateTime.Parse("1986-2-23"),
                    Genre = "Comedy",
                    Price = 9.99M
                },
                new Movie
                {
                    Title = "Rio Bravo",
                    ReleaseDate = DateTime.Parse("1959-4-15"),
                    Genre = "Western",
                    Price = 3.99M
                }
            );
            context.SaveChanges();
        }
    }
}

Ha az adatbázisban vannak filmek, a kezdőérték inicializáló visszatér, és nem adódik hozzá új film.

if (context.Movie.Any())
{
    return;  // DB has been seeded.
}

<a name=kivonat_"si">

Add meg a mag inicializálót

Cserélje le a Program.cs tartalmát a következő kódra. Az új kód ki van emelve.

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    SeedData.Initialize(services);
}

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

Törölje az adatbázis összes rekordjait. Ezt a böngészőben vagy az SSOX-ban található törlési hivatkozásokkal teheti meg.

Tesztelje az alkalmazást. Kényszerítse az alkalmazást az inicializálásra, és hívja meg a kódot a Program.cs fájlban, így a kezdő metódus fut. Az inicializálás kényszerítéséhez zárja be a Visual Studio által megnyitott parancssori ablakot, és indítsa újra a Ctrl+F5 billentyűkombinációt.

Az alkalmazás megjeleníti a beszúrt adatokat.

MVC Movie alkalmazás meg van nyitva a Microsoft Edge-ben, és megjeleníti a filmadatokat

Bevezetés

Az oktatóanyag-sorozat ezen része az SQL-adatbázis ASP.NET Core MVC-alkalmazásban való használatával foglalkozik.

A következő témákkal fog megismerkedni:

  • Regisztrálja és konfigurálja az Entity Framework Core adatbáziskörnyezetét a ASP.NET Core MVC-alkalmazáshoz.
  • Adatbázis-kapcsolati sztringek helyi fejlesztéshez való használatával.
  • Az SQL Server Express LocalDB használatával fejlesztheti és megvizsgálhatja az adatbázist és az adatokat az SQL Server Object Explorerrel.
  • Az adatbázis üzembe helyezése kezdeti mintaadatokkal.

Előfeltétel

Ez az oktatóanyag az előző lépésben beállított adatbázist használja: 4. rész, modell hozzáadása egy ASP.NET Core MVC-alkalmazáshoz.

Az adatbázis-környezet használata

A MvcMovieContext objektum kezeli az adatbázishoz való csatlakozás és Movie objektumok adatbázisrekordokhoz való leképezésének feladatát. Az adatbázis-környezet regisztrálva van a fájl Program.cs tárolójában:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));

A ASP.NET Core Configuration rendszer beolvassa a ConnectionString kulcsot. Helyi fejlesztés esetén lekéri a kapcsolati karakterláncot a appsettings.json fájlból:

"ConnectionStrings": {
  "MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}

Figyelmeztetés

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Éles alkalmazások esetén a legbiztonságosabb elérhető hitelesítési folyamatot kell használni. 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.

SQL Server Express LocalDB (helyi adatbáziskezelő szoftver)

LocalDB:

  • Az SQL Server Express Database Engine egyszerűsített verziója, amely alapértelmezés szerint telepítve van a Visual Studióval.
  • Igény szerint elindul egy kapcsolati karakterlánc használatával.
  • A programfejlesztésre van megcélzva. Felhasználói módban fut, így nincs összetett konfiguráció.
  • Alapértelmezés szerint .mdf fájlokat hoz létre a C:/Users/{user} könyvtárban.

Az adatbázis üzembe helyezése

Hozzon létre egy SeedData nevű új osztályt a Modellek mappában. Cserélje le a létrehozott kódot a következőre:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;

namespace MvcMovie.Models
{
    public static class SeedData
    {
        public static void Initialize(IServiceProvider serviceProvider)
        {
            using (var context = new MvcMovieContext(
                serviceProvider.GetRequiredService<
                    DbContextOptions<MvcMovieContext>>()))
            {
                // Look for any movies.
                if (context.Movie.Any())
                {
                    return;   // DB has been seeded
                }

                context.Movie.AddRange(
                    new Movie
                    {
                        Title = "When Harry Met Sally",
                        ReleaseDate = DateTime.Parse("1989-2-12"),
                        Genre = "Romantic Comedy",
                        Price = 7.99M
                    },

                    new Movie
                    {
                        Title = "Ghostbusters ",
                        ReleaseDate = DateTime.Parse("1984-3-13"),
                        Genre = "Comedy",
                        Price = 8.99M
                    },

                    new Movie
                    {
                        Title = "Ghostbusters 2",
                        ReleaseDate = DateTime.Parse("1986-2-23"),
                        Genre = "Comedy",
                        Price = 9.99M
                    },

                    new Movie
                    {
                        Title = "Rio Bravo",
                        ReleaseDate = DateTime.Parse("1959-4-15"),
                        Genre = "Western",
                        Price = 3.99M
                    }
                );
                context.SaveChanges();
            }
        }
    }
}

Ha az adatbázisban vannak filmek, a kezdőérték inicializáló visszatér, és nem adódik hozzá új film.

if (context.Movie.Any())
{
    return;  // DB has been seeded.
}

Add meg a mag inicializálót

Cserélje le a Program.cs tartalmát a következő kódra. Az új kód ki van emelve.

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MvcMovieContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    SeedData.Initialize(services);
}

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

Törölje az adatbázis összes rekordjait. Ezt a böngészőben vagy az SSOX-ban található törlési hivatkozásokkal teheti meg.

Tesztelje az alkalmazást. Kényszerítse az alkalmazást az inicializálásra, és hívja meg a kódot a Program.cs fájlban, így a kezdő metódus fut. Az inicializálás kényszerítéséhez zárja be a Visual Studio által megnyitott parancssori ablakot, és indítsa újra a Ctrl+F5 billentyűkombinációt.

Az alkalmazás megjeleníti a beszúrt adatokat.

MVC Movie alkalmazás meg van nyitva a Microsoft Edge-ben, és megjeleníti a filmadatokat

Bevezetés

Az oktatóanyag-sorozat ezen része az SQL-adatbázis ASP.NET Core MVC-alkalmazásban való használatával foglalkozik.

A következő témákkal fog megismerkedni:

  • Regisztrálja és konfigurálja az Entity Framework Core adatbáziskörnyezetét a ASP.NET Core MVC-alkalmazáshoz.
  • Adatbázis-kapcsolati sztringek helyi fejlesztéshez való használatával.
  • Az SQL Server Express LocalDB használatával fejlesztheti és megvizsgálhatja az adatbázist és az adatokat az SQL Server Object Explorerrel.
  • Az adatbázis üzembe helyezése kezdeti mintaadatokkal.

Előfeltétel

Ez az oktatóanyag az előző lépésben beállított adatbázist használja: 4. rész, modell hozzáadása egy ASP.NET Core MVC-alkalmazáshoz.

Az adatbázis-környezet használata

A MvcMovieContext objektum kezeli az adatbázishoz való csatlakozás és Movie objektumok adatbázisrekordokhoz való leképezésének feladatát. A fájl ConfigureServices metódusában az adatbázis-környezet a Startup.cs konténerbe van regisztrálva.

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

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

A ASP.NET Core Configuration rendszer beolvassa a ConnectionString kulcsot. Helyi fejlesztés esetén lekéri a kapcsolati karakterláncot a appsettings.json fájlból:

"ConnectionStrings": {
  "MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}

Figyelmeztetés

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Éles alkalmazások esetén a legbiztonságosabb elérhető hitelesítési folyamatot kell használni. 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.

SQL Server Express LocalDB (helyi adatbáziskezelő szoftver)

LocalDB:

  • Az SQL Server Express Database Engine egyszerűsített verziója, amely alapértelmezés szerint telepítve van a Visual Studióval.
  • Igény szerint elindul egy kapcsolati karakterlánc használatával.
  • A programfejlesztésre van megcélzva. Felhasználói módban fut, így nincs összetett konfiguráció.
  • Alapértelmezés szerint .mdf fájlokat hoz létre a C:/Users/{user} könyvtárban.

Az adatbázis vizsgálata

A Nézet menüben nyissa meg SQL Server Object Explorer (SSOX).

Nézet menü

Kattintson a jobb gombbal a Movie táblára > Nézettervező

Kattintson a jobb gombbal a Mozgókép táblára > Nézettervező

Film táblázat meg van nyitva a Tervező

Figyelje meg a IDmelletti kulcsikont. Alapértelmezés szerint az EF egy ID nevű tulajdonságot készít az elsődleges kulcsból.

Kattintson a jobb gombbal a Movie táblára > Adatok megtekintése

Kattintson a jobb gombbal a Mozgókép táblára > Adatok megtekintése

Filmtábla megnyitva, megjelenítve a táblaadatok

Az adatbázis üzembe helyezése

Hozzon létre egy SeedData nevű új osztályt a Modellek mappában. Cserélje le a létrehozott kódot a következőre:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;

namespace MvcMovie.Models
{
    public static class SeedData
    {
        public static void Initialize(IServiceProvider serviceProvider)
        {
            using (var context = new MvcMovieContext(
                serviceProvider.GetRequiredService<
                    DbContextOptions<MvcMovieContext>>()))
            {
                // Look for any movies.
                if (context.Movie.Any())
                {
                    return;   // DB has been seeded
                }

                context.Movie.AddRange(
                    new Movie
                    {
                        Title = "When Harry Met Sally",
                        ReleaseDate = DateTime.Parse("1989-2-12"),
                        Genre = "Romantic Comedy",
                        Price = 7.99M
                    },

                    new Movie
                    {
                        Title = "Ghostbusters ",
                        ReleaseDate = DateTime.Parse("1984-3-13"),
                        Genre = "Comedy",
                        Price = 8.99M
                    },

                    new Movie
                    {
                        Title = "Ghostbusters 2",
                        ReleaseDate = DateTime.Parse("1986-2-23"),
                        Genre = "Comedy",
                        Price = 9.99M
                    },

                    new Movie
                    {
                        Title = "Rio Bravo",
                        ReleaseDate = DateTime.Parse("1959-4-15"),
                        Genre = "Western",
                        Price = 3.99M
                    }
                );
                context.SaveChanges();
            }
        }
    }
}

Ha az adatbázisban vannak filmek, a kezdőérték inicializáló visszatér, és nem adódik hozzá új film.

if (context.Movie.Any())
{
    return;  // DB has been seeded.
}

Add meg a mag inicializálót

Cserélje le a Program.cs tartalmát a következő kódra:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MvcMovie.Data;
using MvcMovie.Models;
using System;

namespace MvcMovie
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;

                try
                {
                    SeedData.Initialize(services);
                }
                catch (Exception ex)
                {
                    var logger = services.GetRequiredService<ILogger<Program>>();
                    logger.LogError(ex, "An error occurred seeding the DB.");
                }
            }

            host.Run();

        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

Tesztelje az alkalmazást.

Törölje az adatbázis összes rekordjait. Ezt a böngészőben vagy az SSOX-ban található törlési hivatkozásokkal teheti meg.

Kényszerítse az alkalmazást az inicializálásra, és hívja meg a metódusokat a Startup osztályban, hogy a kezdő metódus fusson. Az inicializálás kényszerítéséhez az IIS Expresst le kell állítani és újra kell indítani. Ezt a következő módszerek bármelyikével teheti meg:

  • Kattintson a jobb gombbal az IIS Express rendszertálca ikonra az értesítési területen, és koppintson Kilépés vagy Webhely leállítása:

    IIS Express rendszertálca ikonja

    Helyi menü

    • Ha nem hibakeresési módban futtatta a VS-t, nyomja le az F5 billentyűt a hibakeresési módban való futtatáshoz
    • Ha hibakeresési módban futtatta a VS-t, állítsa le a hibakeresőt, és nyomja le az F5 billentyűt

Az alkalmazás megjeleníti a beszúrt adatokat.

MVC Movie alkalmazás meg van nyitva a Microsoft Edge-ben, és megjeleníti a filmadatokat