Sdílet prostřednictvím


Část 5– práce s databází v aplikaci ASP.NET Core MVC

Poznámka:

Toto není nejnovější verze tohoto článku. Pro aktuální verzi tohoto článku viz verzi .NET 9.

Varování

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální vydání najdete v verzi .NET 9 tohoto článku.

Důležité

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.

Aktuální vydání tohoto článku najdete ve verzi .NET 9.

Rick Anderson a Jon P Smith.

Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru pro injektování závislostí v Program.cs souboru.

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

Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:

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

Varování

Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích vizte Secure authentication flows.

SQL Server Express LocalDB

LocalDB:

  • Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
  • Spustí se na vyžádání pomocí připojovacího řetězce.
  • Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
  • Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.

Prozkoumání databáze

V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).

Klikněte pravým tlačítkem myši na tabulku Movie (dbo.Movie) a vyberte > Návrhář zobrazení

Klikněte pravým tlačítkem myši na tabulku Film > a zvolte Návrhář zobrazení.

Tabulka filmů otevřená v Návrháři

Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.

Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data.

Klikněte pravým tlačítkem myši na tabulku Film > a vyberte Zobrazit data.

Otevřená tabulka filmů zobrazující data tabulky

Naplnit databázi

Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:

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

namespace MvcMovie.Models;

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

Pokud jsou v databázi nějaké filmy, počáteční inicializátor se vrátí a žádné filmy nejsou přidány.

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

Přidat inicializátor semen

Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.

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

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

var app = builder.Build();

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

    SeedData.Initialize(services);
}

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

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();

app.MapStaticAssets();

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

app.Run();

Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.

Otestujete aplikaci. Vynuťte inicializaci aplikace voláním kódu v souboru Program.cs, aby se spustila metoda seed. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.

Aplikace zobrazuje osetá data.

Otevřená aplikace MVC Movie v Microsoft Edge zobrazující filmová data

Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru injektování závislostí ve Program.cs souboru.

var builder = WebApplication.CreateBuilder(args);

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

Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:

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

Upozornění

Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích najdete v Bezpečných ověřovacích tocích.

SQL Server Express LocalDB

LocalDB:

  • Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
  • Začne na vyžádání pomocí připojovacího řetězce.
  • Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
  • Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.

Prozkoumání databáze

V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).

Klikněte pravým tlačítkem myši na tabulku Movie (dbo.Movie) > Návrhář zobrazení

Klikněte pravým tlačítkem myši na tabulku Film a vyberte Zobrazit návrháře.

Tabulka filmů otevřená v Návrháři

Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.

Klikněte pravým tlačítkem myši na Movie tabulku a vyberte možnost > Zobrazit data.

Klikněte pravým tlačítkem myši na tabulku Film > a vyberte Zobrazit data.

Tabulka filmů je otevřena zobrazení dat tabulky

Naplnit databázi počátečními daty

Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:

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

namespace MvcMovie.Models;

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

Pokud jsou v databázi nějaké filmy, inicializátor dokončí proces a žádné filmy se nepřidají.

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

Přidejte inicializátor semene

Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.

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

var builder = WebApplication.CreateBuilder(args);

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

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

var app = builder.Build();

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

    SeedData.Initialize(services);
}

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

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

app.UseRouting();

app.UseAuthorization();

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

app.Run();

Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.

Otestujete aplikaci. Vynuťte inicializaci aplikace, a to zavoláním kódu v souboru Program.cs, aby se spustila seed metoda. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.

Aplikace zobrazuje počáteční data.

Otevřená aplikace MVC Film v Microsoft Edge zobrazující data filmu

Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrován v kontejneru pro vkládání závislostí v Program.cs souboru:

var builder = WebApplication.CreateBuilder(args);

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

Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získá připojovací řetězec ze appsettings.json souboru:

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

Upozornění

Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích naleznete v části Secure authentication flows.

SQL Server Express LocalDB

LocalDB:

  • Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
  • Spustí se na vyžádání pomocí připojovacího řetězce.
  • Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
  • Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.

Prozkoumání databáze

V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).

Klikněte pravým tlačítkem myši na tabulku Movie (dbo.Movie) a zvolte > Návrhář zobrazení

Klikněte pravým tlačítkem myši na tabulku Film Zobrazení návrháře.

Tabulka filmů otevřít v Návrháři

Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.

Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data

Klikněte pravým tlačítkem myši na tabulku Film > Zobrazit data.

Otevřená tabulka filmů zobrazující informace tabulky

Naplnit databázi daty

Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:

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

namespace MvcMovie.Models;

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

Pokud jsou v databázi nějaké filmy, počáteční inicializátor vrátí a nepřidají se žádné filmy.

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

<a name=snippet_"si">

Přidat inicializátor semene

Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.

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

var builder = WebApplication.CreateBuilder(args);

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

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

var app = builder.Build();

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

    SeedData.Initialize(services);
}

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

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

app.UseRouting();

app.UseAuthorization();

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

app.Run();

Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.

Otestujete aplikaci. Vynuťte inicializaci aplikace voláním kódu v souboru Program.cs, aby se spustila seed metoda. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.

Aplikace zobrazuje počáteční data.

Aplikace MVC Movie otevřená v Microsoft Edge zobrazující data filmů

Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrovaný v kontejneru Injektáž závislosti v Program.cs souboru.

var builder = WebApplication.CreateBuilder(args);

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

Systém ASP.NET Core Configuration načte ConnectionString klíč. Při místním vývoji získává připojovací řetězec ze souboru appsettings.json.

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

Varování

Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích naleznete v sekci Bezpečné autentizační toky.

SQL Server Express LocalDB

LocalDB:

  • Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
  • Začne na vyžádání pomocí připojovacího řetězce.
  • Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
  • Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.

Inicializovat databázi

Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:

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

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

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

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

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

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

Pokud jsou v databázi nějaké filmy, inicializátor se vrátí a žádné filmy nejsou přidány.

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

Přidejte inicializátor semene

Nahraďte obsah Program.cs následujícím kódem. Nový kód je zvýrazněný.

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

var builder = WebApplication.CreateBuilder(args);

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

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

var app = builder.Build();

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

    SeedData.Initialize(services);
}

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

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

app.UseRouting();

app.UseAuthorization();

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

app.Run();

Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.

Otestujete aplikaci. Přinuťte aplikaci k inicializaci voláním kódu v souboru Program.cs, aby se spustila seed metoda. Pokud chcete vynutit inicializaci, zavřete okno příkazového řádku, které Visual Studio otevřelo, a restartujte stisknutím kombinace kláves Ctrl+F5.

Aplikace zobrazuje osetá data.

Aplikace MVC Movie otevřená v Microsoft Edge zobrazující data o filmech

Objekt MvcMovieContext zpracovává úlohu připojení k databázi a mapování Movie objektů na záznamy databáze. Kontext databáze je zaregistrován do kontejneru pro vkládání závislostí v metodě ConfigureServices v souboru Startup.cs.

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

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

Systém ASP.NET Core Configuration načte ConnectionString klíč. Pro místní vývoj získává připojovací řetězec ze appsettings.json souboru:

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

Varování

Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčních aplikacích najdete v Bezpečné autentizační toky.

SQL Server Express LocalDB

LocalDB:

  • Je zjednodušená verze databázového stroje SQL Server Express, která je ve výchozím nastavení nainstalovaná se sadou Visual Studio.
  • Začne na vyžádání pomocí připojovacího řetězce.
  • Zaměřuje se na vývoj programů. Běží v uživatelském režimu, takže neexistuje složitá konfigurace.
  • Ve výchozím nastavení vytvoří .mdf soubory v adresáři C:/Users/{user}.

Prozkoumání databáze

V nabídce Zobrazení otevřete SQL Server Průzkumník objektů (SSOX).

Nabídka Zobrazit

Klikněte pravým tlačítkem myši na tabulku Movie, poté vyberte > Zobrazit návrháře.

Klikněte pravým tlačítkem myši na tabulku Filmů a vyberte Návrhář zobrazení.

Filmová tabulka otevřena v Návrháři

Poznamenejte si ikonu klávesy vedle IDtlačítka . Ef ve výchozím nastavení vytvoří vlastnost s názvem ID primární klíč.

Klikněte pravým tlačítkem myši na Movie tabulku > Zobrazit data.

Klikněte pravým tlačítkem myši na tabulku Movie > a zobrazte data

Otevřená tabulka filmů zobrazující data tabulky

Zasejte databázi

Vytvořte novou třídu pojmenovanou SeedData ve složce Models . Vygenerovaný kód nahraďte následujícím kódem:

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

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

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

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

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

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

Pokud jsou v databázi nějaké filmy, inicializátor se vrátí a žádné další filmy se nepřidají.

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

Přidejte inicializátor semene

Program.cs Obsah nahraďte následujícím kódem:

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

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

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

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

            host.Run();

        }

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

Otestujete aplikaci.

Odstraňte všechny záznamy v databázi. Můžete to udělat pomocí odkazů pro odstranění v prohlížeči nebo ze služby SSOX.

Vynutit inicializaci aplikace, volání metod ve Startup třídě, takže počáteční metoda se spustí. Aby bylo možné vynutit inicializaci, musí se služba IIS Express zastavit a restartovat. Můžete to udělat pomocí některého z následujících přístupů:

  • V oznamovací oblasti klikněte pravým tlačítkem na ikonu IIS Express a klepněte na Ukončit nebo Zastavit web:

    Ikona hlavního panelu systému služby IIS Express

    Místní nabídka

    • Pokud jste spustili VS v režimu bez ladění, stiskněte klávesu F5 a spusťte ji v režimu ladění.
    • Pokud jste spustili VS v režimu ladění, zastavte ladicí program a stiskněte klávesu F5.

Aplikace zobrazuje počáteční data.

Aplikace MVC Movie otevřená v Microsoft Edge zobrazující data filmů