演習 - EF Core で SQLite データベース プロバイダーを使用する

完了

ここまでは、メモリ内データベースにデータを保存してきました。 このデータベースは、アプリケーションの開発中に簡単に設定して使用できますが、データは永続的ではありません。 その結果、アプリケーションの再起動時にデータが失われます。 アプリケーションをデプロイする前に、データをデータベースに保持する必要があります。

この演習では、リレーショナル データベースを使用してデータを格納するようにアプリケーションをアップグレードします。 SQLite を使用してデータを格納します。

SQLite データベースを設定する

SQLite データベースを設定するには、次のセクションを完了します。

次のツールとパッケージをインストールする

ターミナルで、次のパッケージをインストールします。

  1. SQLite EF Core データベース プロバイダー: データベース プロバイダーと呼ばれるプラグイン ライブラリを使用して、さまざまなデータベースにアクセスできます。 次のパッケージは、Entity Framework (EF) Core の SQLite データベース プロバイダーです。

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. EF Core ツール: EF Core 用ツールは、デザイン時の開発タスクを実行します。 たとえば、移行を作成し、移行を適用し、既存のデータベースに基づいてモデルのコードを生成します。

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design: EF Core でデータベースを作成するためのデザイン時ロジックがすべて含まれています。

    dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0
    

データベースの作成を有効にする

データベースの作成を有効にするには、データベース接続文字列を設定する必要があります。 次に、データ モデルを SQLite データベースに移行します。

  1. Program.csの [var builder = WebApplication.CreateBuilder(args);] で接続文字列を追加します。

    var connectionString = builder.Configuration.GetConnectionString("Pizzas") ?? "Data Source=Pizzas.db";
    

    このコードは、構成プロバイダーで Pizzas という名前の接続文字列を確認します。 見つからない場合は、接続文字列として Data Source=Pizzas.db を使用します。 SQLite は、この文字列をファイルにマップします。

  2. このチュートリアルの CRUD 部分では、インメモリ データベースを使用しました。 次に、インメモリ データベースを永続的なデータベースに置き換えます。

    ビルド サービス内の現在のメモリ内データベース実装 builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items")); を、ここで SQLite に置き換えます。

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. EF Core 移行ツールを使用すると、最初の移行 InitialCreateを生成できるようになりました。 すべての変更を保存し、次のコマンドを実行します。

    dotnet ef migrations add InitialCreate
    

    EF Core は、データベースの移行を表すコードを含む 2 つのファイルを含む Migrations フォルダーをプロジェクト ディレクトリに作成します。

  4. これで移行が完了したので、それを使用してデータベースとスキーマを作成できます。

    ターミナル ウィンドウで、次の database update コマンドを実行して、データベースに移行を適用します。

    dotnet ef database update
    

    新しく作成した Pizzas.db ファイルがプロジェクト ディレクトリに表示されます。

アプリケーションを実行してテストする

バッキング データベースが作成されたので、変更は保持されます。

dotnet runと Swagger UI を使用する前と同様に、アプリケーションをテストします。 Ctrl + C コマンドを使用してアプリケーションを停止します。 次に、もう一度実行し、変更が引き続き Pizzas.dbに保持されていることを確認します。

おめでとうございます! データベースを最小限の API にワイヤードしました。