mcpField
E
ef-core

ef-core

github.com/github開発40.5k9.6k 回インストール今日更新
リポジトリ

ef-core について

Entity Framework Core のコードを作成・レビューする開発者向けのガイダンスです。データ設計、クエリ、パフォーマンス、マイグレーション、セキュリティ、テストを扱います。

主な機能

  1. 01DbContext とエンティティ設計の指針
  2. 02クエリとパフォーマンスの推奨事項
  3. 03マイグレーションと変更追跡の実践
  4. 04セキュリティとテストの指針

活用シーン

  1. 01EF Core コードの改善点のレビュー
  2. 02データモデル、クエリ、マイグレーションの計画
  3. 03データベースアクセスとテスト方法の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill ef-core

インストール後、Claude Code で/ef-coreを入力して読み込まれたか確認します。

詳細

Entity Framework Core のベストプラクティス

あなたの目標は、Entity Framework Core を扱う際にベストプラクティスに従えるよう、私を支援することです。

データコンテキストの設計

  • DbContext クラスは焦点を絞り、まとまりを持たせる
  • 構成オプションにはコンストラクターインジェクションを使用する
  • fluent API の構成には OnModelCreating をオーバーライドする
  • IEntityTypeConfiguration を使ってエンティティ構成を分離する
  • コンソールアプリやテストでは DbContextFactory パターンの使用を検討する

エンティティの設計

  • 意味のある主キーを使用する(自然キーと代理キーを検討する)
  • 適切なリレーションシップを実装する(一対一、一対多、多対多)
  • 制約と検証にはデータアノテーションまたは fluent API を使用する
  • 適切なナビゲーションプロパティを実装する
  • 値オブジェクトには所有エンティティ型の使用を検討する

パフォーマンス

  • 読み取り専用のクエリには AsNoTracking() を使用する
  • 大量の結果セットには Skip() と Take() でページネーションを実装する
  • 必要に応じて Include() を使って関連エンティティを一括読み込みする
  • 必要なフィールドのみを取得する射影(Select)を検討する
  • 頻繁に実行されるクエリにはコンパイル済みクエリを使用する
  • 関連データを適切にインクルードして N+1 クエリ問題を回避する

マイグレーション

  • 小さく焦点を絞ったマイグレーションを作成する
  • マイグレーションには説明的な名前を付ける
  • 本番環境に適用する前にマイグレーションの SQL スクリプトを検証する
  • デプロイにはマイグレーションバンドルの使用を検討する
  • 適切な場合にはマイグレーションを通じてデータシードを追加する

クエリ

  • IQueryable を賢く使用し、クエリがいつ実行されるかを理解する
  • 生の SQL よりも厳密に型指定された LINQ クエリを優先する
  • 適切なクエリ演算子(Where、OrderBy、GroupBy)を使用する
  • 複雑な操作にはデータベース関数を検討する
  • 再利用可能なクエリには仕様パターンを実装する

変更の追跡と保存

  • 適切な変更追跡戦略を使用する
  • SaveChanges() の呼び出しをバッチ化する
  • マルチユーザーシナリオには同時実行制御を実装する
  • 複数の操作にはトランザクションの使用を検討する
  • 適切な DbContext の有効期間を使用する(Web アプリではスコープ付き)

セキュリティ

  • パラメーター化されたクエリを使用して SQL インジェクションを回避する
  • 適切なデータアクセス権限を実装する
  • 生の SQL クエリには注意する
  • 機密情報にはデータ暗号化を検討する
  • マイグレーションを使ってデータベースユーザーの権限を管理する

テスト

  • 単体テストにはインメモリデータベースプロバイダーを使用する
  • 統合テストには SQLite を使った別個のテストコンテキストを作成する
  • 純粋な単体テストには DbContext と DbSet をモックする
  • マイグレーションは分離された環境でテストする
  • モデルの変更にはスナップショットテストを検討する

私の EF Core コードをレビューする際は、問題を特定し、これらのベストプラクティスに従った改善を提案してください。

コメント