mcpField
U
update-pipeline

update-pipeline

github.com/dotnet開発14.8k52 回インストール今日更新
リポジトリ

update-pipeline について

Entity Framework Core の更新パイプライン開発向けスキルです。追跡されたエンティティ変更からデータベースコマンドへの変換を扱い、順序付け、バッチ処理、同時実行チェック、検証を説明します。

主な機能

  1. 01変更検出とコマンド準備
  2. 02外部キー依存関係の順序付け
  3. 03SQL 生成とコマンドのバッチ処理
  4. 04同時実行トークンのチェック
  5. 05ストア生成値の検証

活用シーン

  1. 01SaveChanges のコマンド実行の追跡
  2. 02外部キー順序とバッチ処理のテスト
  3. 03古いデータへの書き込み時の同時実行エラー検証

インストール

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

$npx skills add https://github.com/dotnet/efcore --skill update-pipeline

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

詳細

更新パイプライン

追跡対象のエンティティ変更を、SaveChanges() の実行中にデータベースの INSERT/UPDATE/DELETE コマンドへ変換します。

フロー

SaveChanges() → DetectChanges() → IDatabase.SaveChanges() → UpdateAdapter が IUpdateEntry のリストを作成 → CommandBatchPreparer.BatchCommands() → テーブルの各行について ModificationCommand を作成し、列ごとの ColumnModification で構成 → 同じ行にマッピングされたエントリの追跡に SharedTableEntryMap を使用 → Multigraph によるトポロジカルソート(FK 依存関係の順序付け) → ModificationCommandBatch にグループ化(最大バッチサイズを遵守) → UpdateSqlGenerator がバッチごとに SQL を生成 → BatchExecutor がトランザクション内ですべてのバッチを実行 → StateManager.AcceptAllChanges()

同時実行制御

同時実行トークン → UPDATE/DELETE の WHERE 条件。AffectedCountModificationCommandBatch が影響を受けた行数を確認します。一致しない場合は DbUpdateConcurrencyException をスローします。

共有行の値へのアクセス

コマンドの状態が示すのは行に対する操作であり、すべてのエントリの状態ではありません。削除済みの SharedIdentityEntry を持つ追加エントリは、Modified コマンドに含まれる場合があります。元の値へのアクセスでは、削除済みの共有エントリの元の値を使用し、依存関係の順序付けに必要な以前の FK を維持する必要があります。

検証

  • SaveChanges() が期待される影響行数を返す
  • INSERT/UPDATE の後、ストア生成値がエンティティに反映される
  • 古いデータに対して、想定どおり DbUpdateConcurrencyException がスローされる

コメント