About scaffolding
A skill for working on EF Core scaffolding, which reverse engineers database schemas into C# code. It outlines the scaffolding pipeline and gives guidance for preserving schema-query behavior when adapting provider SQL to limited database engines.
Key features
- 01Describe the reverse-engineering pipeline
- 02Explain scaffolder orchestration
- 03Preserve anti-semi join semantics
- 04Cover schema metadata edge cases
Use cases
- 01Trace schema-to-code generation stages
- 02Adapt provider schema queries to limited engines
- 03Review excluded-property filtering logic
- 04Test metadata cases in schema queries
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ dotnet/ efcore --skill scaffoldingAfter installing, type/scaffoldingin Claude Code to confirm it loaded.
Details
From the project READMEScaffolding
Generates C# code from database schemas (reverse engineering).
When Not to Use
- Working on compiled model generation (
dotnet ef dbcontext optimize)
Reverse Engineering
Pipeline: IDatabaseModelFactory (reads schema) → IScaffoldingModelFactory (builds EF model) → IModelCodeGenerator (generates C#)
IReverseEngineerScaffolder— orchestrates full pipeline
Schema Query Compatibility
Provider schema readers often query one-to-many metadata tables. Preserve anti-semi semantics when adapting SQL for a limited engine: a LEFT JOIN containing the complete excluded-property predicate in ON, followed by a null filter on a non-nullable joined key, is equivalent to NOT EXISTS. Unrelated metadata rows do not join; any matching excluded row makes the joined key non-null and excludes the object. Do not move parts of the excluded-property predicate to WHERE or join all metadata rows and filter individual rows afterward. An equivalent non-correlated anti-set form, such as NOT IN (SELECT key ... WHERE excluded-condition), also works when the subquery cannot return null keys. Cover objects with no metadata, unrelated metadata only, the excluded property only, and both excluded and unrelated properties.