scaffolding について
データベーススキーマを C# コードへリバースエンジニアリングする EF Core Scaffolding 用のスキルです。生成パイプラインを示し、制約のあるデータベースエンジン向けにプロバイダー SQL を調整する際のクエリ動作を説明します。
主な機能
- 01リバースエンジニアリングの流れ
- 02Scaffolder による処理の統括
- 03アンチセミ結合の意味を保持
- 04スキーマメタデータの境界ケース
活用シーン
- 01スキーマからコードへの生成段階を追跡
- 02制約のあるエンジン向けにスキーマクエリを調整
- 03除外プロパティのフィルター処理を確認
- 04スキーマクエリのメタデータケースをテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dotnet/ efcore --skill scaffoldingインストール後、Claude Code で/scaffoldingを入力して読み込まれたか確認します。
詳細
スキャフォールディング
データベーススキーマから C# コードを生成します(リバースエンジニアリング)。
使用しない場合
- コンパイル済みモデルの生成に取り組んでいる場合(
dotnet ef dbcontext optimize)
リバースエンジニアリング
パイプライン:IDatabaseModelFactory(スキーマを読み取る)→ IScaffoldingModelFactory(EF モデルを構築する)→ IModelCodeGenerator(C# を生成する)
IReverseEngineerScaffolder— パイプライン全体を統括します
スキーマクエリの互換性
プロバイダーのスキーマリーダーは、多対一のメタデータテーブルをクエリすることがよくあります。制限のあるエンジン向けに SQL を調整する場合は、アンチセミ結合の意味論を維持してください。除外対象のプロパティ条件全体を ON に含む LEFT JOIN の後に、結合先の NULL にならないキーに対する NULL フィルターを適用する形式は、NOT EXISTS と同等です。無関係なメタデータ行は結合されず、除外対象に一致する行があれば結合先のキーが NULL ではなくなるため、そのオブジェクトは除外されます。除外対象のプロパティ条件の一部を WHERE に移動したり、すべてのメタデータ行を結合してから個々の行をフィルターしたりしないでください。相関のないアンチセット形式(NOT IN (SELECT key ... WHERE excluded-condition) など)も、サブクエリが NULL キーを返さない場合は機能します。メタデータがないオブジェクト、無関係なメタデータのみがあるオブジェクト、除外対象のプロパティのみがあるオブジェクト、除外対象と無関係なプロパティの両方があるオブジェクトを網羅してください。