ASP.NET Core/Entity Framework Core

出典: フリー教科書『ウィキブックス(Wikibooks)』

Entity Framework Coreの概要[編集]

Entity Framework Coreとは何か[編集]

Entity Framework Coreは、Microsoft が提供するオブジェクト関係マッピング (ORM) フレームワークです。データベースのテーブルをオブジェクトでモデル化し、コードからデータベースにアクセスできるようにするツールです。

Entity Framework Coreは、.NET Coreプラットフォーム上で動作する新世代のORMツールで、従来のEntity Frameworkの機能を継承しつつ、パフォーマンスの向上やクロスプラットフォーム対応などの改善が行われています。

Entity Framework Coreの特徴と利点[編集]

Entity Framework Coreの主な特徴と利点は以下の通りです。

  1. オブジェクトモデル指向のデータアクセス
    データベースのテーブルをクラスでモデル化できるため、オブジェクト指向のデータアクセスが可能
  2. LINQ to Entitiesによるクエリ操作
    LINQを使ってデータベースに対するクエリを自然な形で記述できる
  3. クロスプラットフォーム対応
    .NET Coreプラットフォームに対応しているため、Windows、macOS、Linuxなどで利用できる
  4. 高いパフォーマンス
    メモリ管理の最適化やバッチ処理の改善により、従来のEntity Frameworkと比べてパフォーマンスが向上
  5. 柔軟なデータベース接続
    SQLServer、MySQL、PostgreSQL、SQLite、Oracle など、さまざまなデータベースプロバイダに対応
  6. マイグレーション機能
    データモデルの変更に合わせて、データベーススキーマを自動で更新できる
  7. 豊富な拡張性
    多数のサードパーティ製ライブラリが存在し、様々な機能を追加できる

Entity Framework CoreとASP.NET Coreの関係[編集]

Entity Framework Coreは、ASP.NET Coreアプリケーションにおいて、データアクセスレイヤーを構築するのに最適なツールです。

ASP.NET CoreはクロスプラットフォームのWebアプリケーションフレームワークですが、データベースとの連携は重要な機能の1つです。Entity Framework Coreは、ASP.NET Coreアプリケーションにおけるデータアクセスの標準的な選択肢となっています。

両者は密接に統合されており、ASP.NET CoreのプロジェクトテンプレートにはEntity Framework Coreの機能が含まれています。これにより、ASP.NET Coreアプリケーションの開発において、シームレスにEntity Framework Coreを活用できるようになっています。

また、ASP.NET Coreのモジュール性の高い設計思想に合わせて、Entity Framework Coreもクリーンな分離と拡張性を持っているのが特徴です。

このように、Entity Framework Coreは、ASP.NET Coreアプリケーションの中核をなすデータアクセス基盤として重要な位置を占めているといえます。

データモデルの定義[編集]

データエンティティクラスの作成[編集]

プロパティの定義とアノテーション[編集]

1対多、多対多のリレーションの定義[編集]

DBコンテキストの作成[編集]

DbContextクラスの実装[編集]

データベース接続設定の構成[編集]

マイグレーション機能の活用[編集]

基本的なCRUD操作[編集]

データの挿入、更新、削除[編集]

データの検索とフィルタリング[編集]

Include/ThenIncludeによる関連データの取得[編集]

高度なクエリ[編集]

LINQ to Entitiesの活用[編集]

  -複雑なクエリの記述

ストアドプロシージャの呼び出し[編集]

non-relationalデータ[編集]

JSON、XML、Binaryデータの扱い[編集]

NoSQLデータストアとの連携[編集]

パフォーマンス最適化[編集]

Lazy Loading、Eager Loading[編集]

N+1問題の回避[編集]

プロファイリングとチューニング[編集]

トランザクション管理[編集]

明示的なトランザクション制御[編集]

分散トランザクションへの対応[編集]

マイグレーション[編集]

データモデルの変更に合わせたマイグレーション[編集]

データベーススキーマの自動更新[編集]

デプロイ時のマイグレーション実行[編集]

テストと監視[編集]

データアクセスのユニットテスト[編集]

統合テストとe2eテスト[編集]

ログ出力と監視[編集]

高度な機能[編集]

Change Trackingによる更新の追跡[編集]

Interceptorsによるカスタムロジックの組み込み[編集]

クエリキャッシングとバッチ処理[編集]