パート 5、ASP.NET Core MVC アプリでのデータベースの操作
Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、「.NET および .NET Core サポート ポリシー」を参照してください。 現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
重要
この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。
現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
作成者: Rick Anderson および Jon P Smith。
MvcMovieContext
オブジェクトは、データベースへの接続と、データベース レコードへの Movie
オブジェクトのマッピングのタスクを処理します。 データベース コンテキストは、Program.cs
ファイルにある依存関係の挿入コンテナーに登録されます。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
ASP.NET Core の構成システムでは ConnectionString
キーが読み取られます。 ローカルで開発する場合は、 appsettings.json
ファイルから接続文字列が取得されます。
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
警告
この記事では、ユーザーの認証を必要としないローカル データベースを使用します。 運用アプリでは、使用可能な最も安全な認証フローを使用する必要があります。 デプロイされたテスト アプリと運用アプリの認証の詳細については、「セキュリティで保護された認証フロー」をご覧ください。
SQL Server Express LocalDB
LocalDB:
- SQL Server Express データベース エンジンの軽量バージョンであり、Visual Studio とともに既定でインストールされます。
- 接続文字列を使用して、要求時に開始されます。
- プログラム開発を対象としています。 ユーザー モードで実行されるため、複雑な構成はありません。
- 既定では、C:/Users/{user} ディレクトリに .mdf ファイルが作成されます。
データベースを確認する
[表示] メニューの [SQL Server オブジェクト エクスプローラー] (SSOX) を開きます。
Movie
テーブル (dbo.Movie
) を右クリックして、[デザイナーの表示] を選択します。
ID
の横のキー アイコンに注意してください。 既定では、EF は ID
という名前のプロパティを主キーにします。
Movie
テーブルを右クリックし、Movie
を選択します。
データベースのシード
SeedData
フォルダーに SeedData
という名前の新しいクラスを作成します。 生成されたコードを次のコードに置き換えます。
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();
}
}
}
データベースにムービーがある場合、シード初期化子が返され、ムービーは追加されません。
if (context.Movie.Any())
{
return; // DB has been seeded.
}
シード初期化子の追加
Program.cs
の内容を以下のコードに置き換えます。 新しいコードが強調表示されます。
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();
データベース内のすべてのレコードを削除します。 これはブラウザーの削除リンクで行うか、SSOX から行うことができます。
アプリをテストします。 アプリに初期化を強制し、Program.cs
ファイルのコードを呼び出して、シード メソッドが実行されるようにします。 初期化を強制するには、Visual Studio が開いているコマンド プロンプト ウィンドウを閉じ、Ctrl + F5 キーを押して再起動します。
アプリにシードされたデータが表示されます。
MvcMovieContext
オブジェクトは、データベースへの接続と、データベース レコードへの Movie
オブジェクトのマッピングのタスクを処理します。 データベース コンテキストは、Program.cs
ファイルにある依存関係の挿入コンテナーに登録されます。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
ASP.NET Core の構成システムでは ConnectionString
キーが読み取られます。 ローカルで開発する場合は、 appsettings.json
ファイルから接続文字列が取得されます。
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
警告
この記事では、ユーザーの認証を必要としないローカル データベースを使用します。 運用アプリでは、使用可能な最も安全な認証フローを使用する必要があります。 デプロイされたテスト アプリと運用アプリの認証の詳細については、「セキュリティで保護された認証フロー」をご覧ください。
SQL Server Express LocalDB
LocalDB:
- SQL Server Express データベース エンジンの軽量バージョンであり、Visual Studio とともに既定でインストールされます。
- 接続文字列を使用して、要求時に開始されます。
- プログラム開発を対象としています。 ユーザー モードで実行されるため、複雑な構成はありません。
- 既定では、C:/Users/{user} ディレクトリに .mdf ファイルが作成されます。
データベースを確認する
[表示] メニューの [SQL Server オブジェクト エクスプローラー] (SSOX) を開きます。
Movie
テーブル (dbo.Movie
) を右クリックして、[デザイナーの表示] を選択します。
ID
の横のキー アイコンに注意してください。 既定では、EF は ID
という名前のプロパティを主キーにします。
Movie
テーブルを右クリックし、Movie
を選択します。
データベースのシード
SeedData
フォルダーに SeedData
という名前の新しいクラスを作成します。 生成されたコードを次のコードに置き換えます。
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();
}
}
}
データベースにムービーがある場合、シード初期化子が返され、ムービーは追加されません。
if (context.Movie.Any())
{
return; // DB has been seeded.
}
シード初期化子の追加
Program.cs
の内容を以下のコードに置き換えます。 新しいコードが強調表示されます。
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();
データベース内のすべてのレコードを削除します。 これはブラウザーの削除リンクで行うか、SSOX から行うことができます。
アプリをテストします。 アプリに初期化を強制し、Program.cs
ファイルのコードを呼び出して、シード メソッドが実行されるようにします。 初期化を強制するには、Visual Studio が開いているコマンド プロンプト ウィンドウを閉じ、Ctrl + F5 キーを押して再起動します。
アプリにシードされたデータが表示されます。
MvcMovieContext
オブジェクトは、データベースへの接続と、データベース レコードへの Movie
オブジェクトのマッピングのタスクを処理します。 データベース コンテキストは、Program.cs
ファイルにある依存関係の挿入コンテナーに登録されます。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
ASP.NET Core の構成システムでは ConnectionString
キーが読み取られます。 ローカルで開発する場合は、 appsettings.json
ファイルから接続文字列が取得されます。
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
警告
この記事では、ユーザーの認証を必要としないローカル データベースを使用します。 運用アプリでは、使用可能な最も安全な認証フローを使用する必要があります。 デプロイされたテスト アプリと運用アプリの認証の詳細については、「セキュリティで保護された認証フロー」をご覧ください。
SQL Server Express LocalDB
LocalDB:
- SQL Server Express データベース エンジンの軽量バージョンであり、Visual Studio とともに既定でインストールされます。
- 接続文字列を使用して、要求時に開始されます。
- プログラム開発を対象としています。 ユーザー モードで実行されるため、複雑な構成はありません。
- 既定では、C:/Users/{user} ディレクトリに .mdf ファイルが作成されます。
データベースを確認する
[表示] メニューの [SQL Server オブジェクト エクスプローラー] (SSOX) を開きます。
Movie
テーブル (dbo.Movie
) を右クリックして、[デザイナーの表示] を選択します。
ID
の横のキー アイコンに注意してください。 既定では、EF は ID
という名前のプロパティを主キーにします。
Movie
テーブルを右クリックし、Movie
を選択します。
データベースのシード
SeedData
フォルダーに SeedData
という名前の新しいクラスを作成します。 生成されたコードを次のコードに置き換えます。
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();
}
}
}
データベースにムービーがある場合、シード初期化子が返され、ムービーは追加されません。
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<a name=snippet_"si">
シード初期化子の追加
Program.cs
の内容を以下のコードに置き換えます。 新しいコードが強調表示されます。
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();
データベース内のすべてのレコードを削除します。 これはブラウザーの削除リンクで行うか、SSOX から行うことができます。
アプリをテストします。 アプリに初期化を強制し、Program.cs
ファイルのコードを呼び出して、シード メソッドが実行されるようにします。 初期化を強制するには、Visual Studio が開いているコマンド プロンプト ウィンドウを閉じ、Ctrl + F5 キーを押して再起動します。
アプリにシードされたデータが表示されます。
MvcMovieContext
オブジェクトは、データベースへの接続と、データベース レコードへの Movie
オブジェクトのマッピングのタスクを処理します。 データベース コンテキストは、Program.cs
ファイルにある依存関係の挿入コンテナーに登録されます。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
ASP.NET Core の構成システムでは ConnectionString
キーが読み取られます。 ローカルで開発する場合は、 appsettings.json
ファイルから接続文字列が取得されます。
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}
警告
この記事では、ユーザーの認証を必要としないローカル データベースを使用します。 運用アプリでは、使用可能な最も安全な認証フローを使用する必要があります。 デプロイされたテスト アプリと運用アプリの認証の詳細については、「セキュリティで保護された認証フロー」をご覧ください。
SQL Server Express LocalDB
LocalDB:
- SQL Server Express データベース エンジンの軽量バージョンであり、Visual Studio とともに既定でインストールされます。
- 接続文字列を使用して、要求時に開始されます。
- プログラム開発を対象としています。 ユーザー モードで実行されるため、複雑な構成はありません。
- 既定では、C:/Users/{user} ディレクトリに .mdf ファイルが作成されます。
データベースのシード
SeedData
フォルダーに SeedData
という名前の新しいクラスを作成します。 生成されたコードを次のコードに置き換えます。
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();
}
}
}
}
データベースにムービーがある場合、シード初期化子が返され、ムービーは追加されません。
if (context.Movie.Any())
{
return; // DB has been seeded.
}
シード初期化子の追加
Program.cs
の内容を以下のコードに置き換えます。 新しいコードが強調表示されます。
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();
データベース内のすべてのレコードを削除します。 これはブラウザーの削除リンクで行うか、SSOX から行うことができます。
アプリをテストします。 アプリに初期化を強制し、Program.cs
ファイルのコードを呼び出して、シード メソッドが実行されるようにします。 初期化を強制するには、Visual Studio が開いているコマンド プロンプト ウィンドウを閉じ、Ctrl + F5 キーを押して再起動します。
アプリにシードされたデータが表示されます。
MvcMovieContext
オブジェクトは、データベースへの接続と、データベース レコードへの Movie
オブジェクトのマッピングのタスクを処理します。 データベース コンテキストは、Startup.cs
ファイルの ConfigureServices
メソッドで依存関係の挿入コンテナーに登録されます。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
ASP.NET Core の構成システムでは ConnectionString
キーが読み取られます。 ローカルで開発する場合は、 appsettings.json
ファイルから接続文字列が取得されます。
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
警告
この記事では、ユーザーの認証を必要としないローカル データベースを使用します。 運用アプリでは、使用可能な最も安全な認証フローを使用する必要があります。 デプロイされたテスト アプリと運用アプリの認証の詳細については、「セキュリティで保護された認証フロー」をご覧ください。
SQL Server Express LocalDB
LocalDB:
- SQL Server Express データベース エンジンの軽量バージョンであり、Visual Studio とともに既定でインストールされます。
- 接続文字列を使用して、要求時に開始されます。
- プログラム開発を対象としています。 ユーザー モードで実行されるため、複雑な構成はありません。
- 既定では、C:/Users/{user} ディレクトリに .mdf ファイルが作成されます。
データベースを確認する
[表示] メニューの [SQL Server オブジェクト エクスプローラー] (SSOX) を開きます。
Movie
テーブルを右クリックし、Movie
を選択します。
ID
の横のキー アイコンに注意してください。 既定では、EF は ID
という名前のプロパティを主キーにします。
Movie
テーブルを右クリックし、Movie
を選択します。
データベースのシード
SeedData
フォルダーに SeedData
という名前の新しいクラスを作成します。 生成されたコードを次のコードに置き換えます。
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();
}
}
}
}
データベースにムービーがある場合、シード初期化子が返され、ムービーは追加されません。
if (context.Movie.Any())
{
return; // DB has been seeded.
}
シード初期化子の追加
Program.cs
の内容を次のコードに置き換えます。
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>();
});
}
}
アプリをテストします。
データベース内のすべてのレコードを削除します。 これはブラウザーの削除リンクで行うか、SSOX から行うことができます。
Startup
クラスでメソッドを呼び出してアプリを強制的に初期化して、シード メソッドが実行されるようにします。 強制的に初期化するには、IIS Express を停止してから再起動する必要があります。 これは次の方法のいずれかを使用して行うことができます。
通知領域にある IIS Express システム トレイ アイコンを右クリックし、 [終了] または [サイトの停止] をタップします。
- 非デバッグ モードで VS を実行していた場合は、F5 キーを押してデバッグ モードで実行します。
- デバッグ モードで VS を実行していた場合は、デバッガーを停止して、F5 キーを押します。
アプリにシードされたデータが表示されます。
ASP.NET Core