|
この記事は、WeChat公式アカウント「Code Farmer Reading」から転載したものです。執筆者はCode Farmer Readingです。転載の許可については、Code Farmer Reading公式アカウントまでお問い合わせください。 Microsoft の Entity Framework は、オープンソースのオブジェクトリレーショナルマッピング (ORM) フレームワークであり、データベースのデータモデルとドメインモデル間のギャップをコードレベルで埋めるのに役立ちます。Entity Framework は、アプリケーションによるデータベースの CRUD 操作を簡素化し、データベースへのデータの永続化方法を上位レベルで保護します。 より具体的には、DbContext はデータベースとドメインモデル間のブリッジとして機能します。この記事では、DbContext を設定し、Entity Framework Core プロバイダーを使用してデータベースに対して CRUD 操作を実行する方法について説明します。 Dbコンテキスト DbContext は Entity Framework の非常に重要なコンポーネントです。データベースへのセッション接続として機能します。エンティティコレクションへのデータのクエリや、基盤となるデータベースへのエンティティの保存に使用できます。Entity Framework Core の DbContext には、以下の機能モジュールがあります。
EntityFrameworkを使用するには、NuGet経由でMicrosoft.EntityFrameworkCoreパッケージを参照する必要があります。Visual Studio 2019のNuGetパッケージマネージャービジュアルインターフェースからインストールするか、NuGetパッケージマネージャーのコマンドラインツールで以下のコマンドを入力してインストールできます。
次に、ASP.NET Core で DbContext を使用する方法について説明します。 DbContext を作成する まず、次のコードに示すように、Entity Framework の基本クラス DbContext から継承する CustomContext クラスを作成します。
ご覧のとおり、CustomContextのコンストラクタはDbContextOptions型のパラメータを受け取ります。このクラスは主に、DbContextに必要なパラメータを設定するために使用されます。もちろん、OnConfiguring()メソッドでDbContextを設定することもできます。以下のOnModelCreating()メソッドは、モデルの設定に使用されます。 以下では、CustomContext にいくつかの DbSet を追加します。
DbContext を登録し、ASP.NET Core ランタイムに挿入します。 ASP.NET Core で使用するには、CustomerContext を ServiceCollection コンテナに挿入する必要があります。ここでは SQL Server を基盤ストレージとして使用しているため、NuGet の Microsoft.EntityFrameworkCore.SqlServer パッケージも参照する必要があります。次に、Startup.ConfigureServices() に次のコードを追加します。
DbContext 依存性注入 CustomContext がコンテナに注入されたので、HomeController 内の CustomerContext インスタンスを依存性注入によって取得できます。以下のコードスニペットは、その方法を示しています。
上記のコードでは、データベースが正常に作成されたことを確認するために `dbContext.Database.EnsureCreated();` を使用しました。このコードを実行すると、下の画像に示すように、`MyTest` という名前のデータベースと `Author` および `Blog` という名前の2つのテーブルが生成されます。 次に、Indexメソッドにレコードを挿入し、クエリを実行します。結果は以下のようになります。 EFの設定はこれで完了です。これでCRUD操作にCustomContextを使用できるようになります。DbContextは概念的にはObjectContextに似ており、UnitOfWorkユニットを表します。EFはDDDの実装例です。DbContextはアプリケーションとデータベース間のやり取りを担います。Entity Framework Coreのその他の機能については、今後の記事で詳しく紹介します。 翻訳リンク: https://www.infoworld.com/article/3311737/how-to-use-the-dbcontext-in-entity-framework-core.html |