演習 - EF Core で SQLite データベース プロバイダーを使用する
この時点までは、メモリ内データベースにデータが保存されています。 このデータベースは、アプリケーションの開発中に簡単に設定して使用できますが、データは永続的ではありません。 その結果、アプリケーションの再起動時にデータが失われます。 アプリケーションを配置する前に、データをデータベースに永続化する必要があります。
この演習では、リレーショナル データベースを使用してデータを格納するようにアプリケーションをアップグレードします。 SQLite を使用してデータを格納します。
SQLite データベースを設定する
次のセクションを完了して、SQLite データベースを設定します。
次のツールとパッケージをインストールする
ターミナルで、次のパッケージをインストールします。
SQLite EF Core データベース プロバイダー: データベース プロバイダーと呼ばれるプラグイン ライブラリを使用して、さまざまなデータベースにアクセスできます。 次のパッケージは、Entity Framework (EF) Core 用の SQLite データベース プロバイダーです。
dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
EF Core ツール: EF Core 用のツールがデザイン時の開発タスクを実行します。 たとえば、既存のデータベースに基づいて、移行を作成し、移行を適用し、モデルのコードを生成します。
dotnet tool install --global dotnet-ef
Microsoft.EntityFrameworkCore.Design: データベースを作成するための EF Core のデザイン時ロジックがすべて含まれています。
dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0
データベースの作成を有効にする
データベースの作成を有効にするには、データベース接続文字列を設定する必要があります。 その後、データ モデルを SQLite データベースに移行します。
Program.cs で、
var builder = WebApplication.CreateBuilder(args);
の下に接続文字列を追加します。var connectionString = builder.Configuration.GetConnectionString("Pizzas") ?? "Data Source=Pizzas.db";
このコードを使用すると、構成プロバイダーで Pizzas という名前の接続文字列がチェックされます。 見つからない場合は、接続文字列として
Data Source=Pizzas.db
が使用されます。 SQLite はこの文字列をファイルにマップします。このチュートリアルの CRUD 部分では、メモリ内データベースを使用しました。 ここでは、メモリ内データベースを永続的なデータベースに置き換えます。
ビルド サービスの現在のメモリ内データベースの実装
builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items"));
を、こちらの SQLite のものに置き換えます。builder.Services.AddSqlite<PizzaDb>(connectionString);
EF Core 移行ツールを使用すると、最初の移行
InitialCreate
を生成できるようになります。 変更をすべて保存し、次のコマンドを実行します。dotnet ef migrations add InitialCreate
EF Core によって、データベースの移行を表すコードを含む 2 つのファイルを含む、Migrations フォルダーがプロジェクト ディレクトリに作成されます。
移行が完了したので、それを使用してデータベースとスキーマを作成できます。
ターミナル ウィンドウで、次の
database update
コマンドを実行して、データベースに移行を適用します。dotnet ef database update
プロジェクト ディレクトリに新しく作成された Pizzas.db ファイルが表示されます。
アプリケーションの実行とテスト
これで、バッキング データベースが完成し、変更が永続化されるようになります。
dotnet run
と Swagger UI を使用する前と同様に、お使いのアプリケーションをテストします。 Ctrl+C コマンドを使用して、アプリケーションを停止します。 次に、もう一度実行し、変更が Pizzas.db にまだ保持されていることを確認します。
おめでとうございます。 データベースがお使いの最小 API に接続されました。