演習 - EF Core で SQLite データベース プロバイダーを使用する
ここまでは、メモリ内データベースにデータを保存してきました。 このデータベースは、アプリケーションの開発中に簡単に設定して使用できますが、データは永続的ではありません。 その結果、アプリケーションの再起動時にデータが失われます。 アプリケーションをデプロイする前に、データをデータベースに保持する必要があります。
この演習では、リレーショナル データベースを使用してデータを格納するようにアプリケーションをアップグレードします。 SQLite を使用してデータを格納します。
SQLite データベースを設定する
SQLite データベースを設定するには、次のセクションを完了します。
次のツールとパッケージをインストールする
ターミナルで、次のパッケージをインストールします。
SQLite EF Core データベース プロバイダー: データベース プロバイダーと呼ばれるプラグイン ライブラリを使用して、さまざまなデータベースにアクセスできます。 次のパッケージは、Entity Framework (EF) Core の SQLite データベース プロバイダーです。
dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0EF Core ツール: EF Core 用ツールは、デザイン時の開発タスクを実行します。 たとえば、移行を作成し、移行を適用し、既存のデータベースに基づいてモデルのコードを生成します。
dotnet tool install --global dotnet-efMicrosoft.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 InitialCreateEF Core は、データベースの移行を表すコードを含む 2 つのファイルを含む Migrations フォルダーをプロジェクト ディレクトリに作成します。
これで移行が完了したので、それを使用してデータベースとスキーマを作成できます。
ターミナル ウィンドウで、次の
database updateコマンドを実行して、データベースに移行を適用します。dotnet ef database update新しく作成した Pizzas.db ファイルがプロジェクト ディレクトリに表示されます。
アプリケーションを実行してテストする
バッキング データベースが作成されたので、変更は保持されます。
dotnet runと Swagger UI を使用する前と同様に、アプリケーションをテストします。
Ctrl + C コマンドを使用してアプリケーションを停止します。 次に、もう一度実行し、変更が引き続き Pizzas.dbに保持されていることを確認します。
おめでとうございます! データベースを最小限の API にワイヤードしました。