Skip to content

Carrot.Data.Scaffold.Process

net

Core scaffolding process framework -- discovers, creates, scaffolds, and links domain concepts into a typed graph via assembly scanning and reflection.

Installation

Project reference:

xml
<ProjectReference Include="..\Carrot.Data.Scaffold.Process\Carrot.Data.Scaffold.Process.csproj" />

Architecture

Scaffold Lifecycle

ScaffoldProcess.Scaffold() runs six sequential phases across all registered concepts, ordered by ProcessPriority (IntrospectiveAbstract=1, DeclarativeSingle=2, Declarative=3, Introspective=4):

  1. DiscoverDefinitions -- scans ScanAssembly for concrete types implementing the concept's DefineType
  2. CreateGraph -- constructs graph objects via ScaffoldGraphFactory, resolving constructor params including cross-concept references
  3. BeforeScaffoldMethods -- pre-scaffold hooks fire at concept and instance level
  4. ScaffoldMethods -- invokes the Scaffold() method on each definition, passing its configure object
  5. AfterScaffoldMethods -- post-scaffold hooks
  6. LinkGraph -- connects graph objects via [ScaffoldGraphCollection] attributes, populating relationship collections

Concept Model

Each concept binds three types together:

  • Define (IScaffoldDefine) -- user-authored class declaring what to scaffold
  • Configure (IScaffoldConfigure) -- fluent API passed to the define's Scaffold() method
  • Graph (IScaffoldGraph) -- the output data structure

Four concept flavors handle different keying strategies:

  • Declarative -- string-keyed, multiple instances (e.g., controllers, APIs)
  • DeclarativeSingle -- singleton (e.g., database, collection)
  • Introspective -- Type-keyed, driven by generic type parameter (e.g., entities, models)
  • IntrospectiveAbstract -- two-level hierarchy for abstract base types with concrete inheritors

Graph Factory

ScaffoldGraphFactory creates graph objects by reflection, trying constructors in descending parameter count. It resolves:

  • logicalName / rawIdentifier -- from the define's LogicalName
  • TGraphRoot -- the process graph root
  • IScaffoldGraph subtypes -- cross-concept references resolved via [ScaffoldGraphKey] attribute on the define type

Graph Linking

After scaffolding, LinkGraph populates ICollection<T> properties marked with [ScaffoldGraphCollection], optionally filtering by a back-reference property.

Dependencies

  • Carrot.Data.Scaffold.Core -- base interfaces (IScaffoldGraph, IScaffoldDefine, IScaffoldConfigure, attributes)
  • Carrot.Logging -- ILog
  • .NET 10

Build

bash
dotnet build

Using Carrot.Data.Scaffold.Process

Getting Started

This package is the base framework. You don't use it directly -- you extend it by creating a domain-specific process (like ScaffoldApiProcess or ScaffoldDatabaseProcess). Here's the pattern:

1. Define a graph root and options

csharp
public class ScaffoldMyDomain
{
    public ScaffoldProcessGraphCollection<string, MyGraphItem> Items { get; } = new();
}

public class ScaffoldMyDomainOptions
{
    public bool ReportConfiguration { get; set; } = false;
}

2. Create a process

csharp
public class ScaffoldMyDomainProcess : ScaffoldProcess<ScaffoldMyDomain, ScaffoldMyDomainOptions>
{
    public ScaffoldMyDomainProcess(Assembly scanAssembly, ScaffoldMyDomainOptions options, ILog? log)
        : base(scanAssembly, options, log)
    {
        this.ConceptItems = this.Concept<MyConceptItems, MyGraphItem>(
            new MyConceptItems(this));
    }

    public MyConceptItems ConceptItems { get; }
}

3. Create a concept

csharp
public class MyConceptItems : ScaffoldConceptDeclarative<ScaffoldMyDomain, ScaffoldMyDomainOptions, MyGraphItem>
{
    public MyConceptItems(ScaffoldMyDomainProcess process)
        : base(process,
               typeof(MyDefineItem),        // define type
               typeof(MyConfigureItem),      // configure type
               typeof(MyGraphItem),          // graph type
               root => root.Items)           // store accessor
    { }
}

4. Create define and configure types

csharp
// Users implement this to declare items
public abstract class MyDefineItem : IScaffoldDefineDeclarative
{
    public abstract string GraphKey { get; }
    public string LogicalName => this.GraphKey;
    public abstract void Scaffold(MyConfigureItem config, ILog? log = null);
}

// Fluent configuration API
public class MyConfigureItem : IScaffoldConfigure
{
    public IScaffoldGraph Graph { get; }
    // ... fluent methods
}

5. Run the process

csharp
var process = new ScaffoldMyDomainProcess(
    typeof(MyAssemblyMarker).Assembly,
    new ScaffoldMyDomainOptions(),
    log);

ScaffoldMyDomain result = process.Scaffold();
// result.Items now contains all discovered and scaffolded items

Common Patterns

Lifecycle Hooks

Override hooks on your concept to inject behavior at each phase:

csharp
protected override void OnAfterDiscovery()
{
    // Validate all discovered definitions
}

protected override void OnGraphItemCreated(MyGraphItem graphItem)
{
    // Auto-register related items when a graph object is created
}

protected override void OnGraphItemLinked(MyGraphItem graphItem)
{
    // Post-linking validation
}

Cross-Concept References

Use [ScaffoldGraphKey] on define types to enable automatic graph constructor injection:

csharp
public abstract class MyDefineController : IScaffoldDefineDeclarative
{
    [ScaffoldGraphKey(typeof(MyDefineApi))]
    public string GetTargetApi() => this.ApiName;
}

The graph factory resolves IScaffoldGraph constructor parameters by looking up the referenced concept and key.

Tips / Gotchas

  • Processing priority matters. IntrospectiveAbstract(1) runs before DeclarativeSingle(2), Declarative(3), and Introspective(4). If concept B depends on concept A's graph existing, A must have a lower priority number.
  • Multiple instances can target the same graph. An instance is not an entity -- you can have several scaffolds that contribute to the same graph object.
  • Open vs closed generics. Declarative concepts expect closed define/configure types. Introspective concepts expect open generics that get closed per-entity.
  • Assembly scanning is single-assembly. Only ScanAssembly is scanned for definition types -- if your defines live in multiple assemblies, you'll need multiple processes or a merged assembly.

Package Contents

Carrot.Data.Scaffold.Process.Api

Package: Carrot.Data.Scaffold.Process.Api

Process

ScaffoldApiProcess -- main process; registers 12 concepts: Collection · Apis · Controllers · Enums · Types · Traits · TraitBehaviours · Model · ModelAbstract · Commands · ResponseStatusSets · RateLimit

ScaffoldApi -- graph root: Apis · Collection · Controllers · Models · Commands · Enums · Types · Traits · TraitBehaviours · RateLimits · ResponseStatusSets

ScaffoldApiOptions -- ReportConfiguration

Define Types

ScaffoldApiDefineApi -- declarative; ApiName · DomainName · Scaffold(ScaffoldApiConfigureApi, ILog?)

ScaffoldApiDefineController -- declarative; BaseRoute · ControllerName · TargetApi · ScaffoldImpl(ScaffoldApiConfigureController, ILog?)

ScaffoldApiDefineModel<TModel> -- introspective; ModelType · Scaffold(ScaffoldApiConfigureModel<TModel>, ScaffoldApiReflectedModel, ILog?) · TypeValid()

ScaffoldApiDefineAbstract<TModel> -- introspective abstract; base model scaffolds applied to all concrete inheritors

ScaffoldApiDefineCollection -- declarative single; collection-level configuration

ScaffoldApiDefineCommand<TCommand> -- introspective; command payload definitions

ScaffoldApiDefineEnum<TEnum> -- introspective; enum definitions

ScaffoldApiDefineType<TType> -- introspective; standalone type definitions

ScaffoldApiDefineTrait<TTrait> -- introspective; trait definitions

ScaffoldApiDefineTraitBehaviour · ScaffoldApiDefineTraitBehaviour<,> · ScaffoldApiDefineTraitBehaviour<,,> -- declarative; trait behaviour definitions

ScaffoldApiDefineRateLimit -- declarative; rate limiting policy definitions

ScaffoldApiDefineResponseStatusSet -- declarative; response status set definitions

ScaffoldApiDefineConversion -- type conversion definitions

Configure Types

Controller

ScaffoldApiConfigureController -- fluent controller config: ActionGet() · ActionPost() · ActionPut() · ActionDelete() · ActionPatch() · ActionHead() · ActionUpload() · AuthenticationRequirement() · RateLimiting() · RequireDatabaseContext() · SetName() · Annotations()

ScaffoldApiConfigureControllerActionRestQuery -- GET action config

ScaffoldApiConfigureControllerActionRestMutation -- POST/PUT/DELETE/PATCH action config

ScaffoldApiConfigureControllerActionUpload -- file upload action config

ScaffoldApiConfigureControllerActionStatusCodes -- HTTP status code overrides

ScaffoldApiConfigureControllerActionAuthentication -- per-action auth config

ScaffoldApiConfigureControllerActionMeta -- action metadata

ScaffoldApiConfigureControllerActionParameter -- route/query/header parameters

ScaffoldApiConfigureControllerActionUploadLimits -- file size/count limits

ScaffoldApiConfigureControllerRequireContext -- database context injection

Action Capabilities

ScaffoldApiConfigureControllerActionCapabilities -- CanFilter() · CanSearch() · CanSort() · Paginated()

ScaffoldApiConfigureControllerActionCapabilitiesCanFilter · ScaffoldApiConfigureControllerActionCapabilitiesCanSearch · ScaffoldApiConfigureControllerActionCapabilitiesCanSort · ScaffoldApiConfigureControllerActionCapabilitiesPaginated

Action Request/Response

ScaffoldApiConfigureControllerActionRequest · ScaffoldApiConfigureControllerActionRequestJson · ScaffoldApiConfigureControllerActionRequestNone

ScaffoldApiConfigureControllerActionResponse · ScaffoldApiConfigureControllerActionResponseJson · ScaffoldApiConfigureControllerActionResponseJsonApi · ScaffoldApiConfigureControllerActionResponseDownload · ScaffoldApiConfigureControllerActionResponseStream · ScaffoldApiConfigureControllerActionResponseNone

Model

ScaffoldApiConfigureModel<TModel> -- fluent model config: HasPrimaryKey() · HasIdentity() · Property() · Projection() · ProjectionSummary() · ProjectionDetail() · ExtendProjection() · RelationshipOne() · RelationshipMany() · InheritsFrom<>() · SetModelUsage() · Annotations()

ScaffoldApiConfigureModelProperty<TModel, TProperty> -- per-property config

ScaffoldApiConfigureModelProjection<TModel> -- projection config

ScaffoldApiConfigureModelProjectionProperty<TModel> -- projection property config

ScaffoldApiConfigureModelPrimaryKey<TModel> -- primary key config

ScaffoldApiConfigureModelIdentity<TModel> -- identity config

ScaffoldApiConfigureModelRelationship -- base relationship config with DetailLevel · Inclusion · Pagination · Visibility

Commands / Enums / Types / Traits

ScaffoldApiConfigureCommand · ScaffoldApiConfigureCommandProperty

ScaffoldApiConfigureEnum · ScaffoldApiConfigureEnumValue

ScaffoldApiConfigureType · ScaffoldApiConfigureTypeProperty · ScaffoldApiConfigureTypeConstructor

ScaffoldApiConfigureTrait · ScaffoldApiConfigureTraitProperty · ScaffoldApiConfigureTraitProjection · ScaffoldApiConfigureTraitProjectionProperty

ScaffoldApiConfigureTraitBehaviour · ScaffoldApiConfigureTraitBehaviour<,> · ScaffoldApiConfigureTraitBehaviour<,,>

Rate Limiting

ScaffoldApiConfigureRateLimit · IScaffoldApiConfigureRateLimit · IScaffoldApiConfigureRateLimitPartitioned · IScaffoldApiConfigureActionProfile

ScaffoldApiConfigureRateLimitInstanceFixed · ScaffoldApiConfigureRateLimitInstanceSliding · ScaffoldApiConfigureRateLimitInstanceToken · ScaffoldApiConfigureRateLimitInstanceConcurrency

Other Configure

ScaffoldApiConfigureApi · ScaffoldApiConfigureCollection · ScaffoldApiConfigureResponseStatusSet

Graph Types

Controllers

ScaffoldApiGraphController · ScaffoldApiGraphControllerAction · ScaffoldApiGraphControllerActionAuthentication · ScaffoldApiGraphControllerActionCapabilities · ScaffoldApiGraphControllerActionMeta · ScaffoldApiGraphControllerActionParameter · ScaffoldApiGraphControllerActionRequest · ScaffoldApiGraphControllerActionResponse · ScaffoldApiGraphControllerActionStatusCodes · ScaffoldApiGraphControllerActionUploadLimits · ScaffoldApiGraphControllerRequireContext

Models

ScaffoldApiGraphModel · ScaffoldApiGraphModel<TModel> · ScaffoldApiGraphModelProperty<,> · ScaffoldApiGraphModelProjection<> · ScaffoldApiGraphModelProjectionProperty<> · ScaffoldApiGraphModelPrimaryKey<> · ScaffoldApiGraphModelIdentity<> · ScaffoldApiGraphModelInheritance<> · ScaffoldApiGraphModelRelationship · ScaffoldApiGraphModelPropertyCqrs

Commands / Enums / Types / Traits

ScaffoldApiGraphCommand · ScaffoldApiGraphCommandProperty · ScaffoldApiGraphEnum · ScaffoldApiGraphEnumValue · ScaffoldApiGraphType · ScaffoldApiGraphTypeProperty · ScaffoldApiGraphTypeConstructor · ScaffoldApiGraphTypeConstructorParameter · ScaffoldApiGraphTypeConstructorAssignment · ScaffoldApiGraphTrait · ScaffoldApiGraphTraitProperty · ScaffoldApiGraphTraitProjection · ScaffoldApiGraphTraitProjectionProperty · ScaffoldApiGraphTraitPrimaryKey

Other Graph

ScaffoldApiGraphApi · ScaffoldApiGraphCollection · ScaffoldApiGraphConversion · ScaffoldApiGraphProperty · ScaffoldApiGraphRateLimit · ScaffoldApiGraphRateLimitInstance · ScaffoldApiGraphRateLimitPartition · ScaffoldApiGraphResponseStatusSet · ScaffoldApiGraphResponseStatusSetItem · ScaffoldApiGraphTraitBehaviour · ScaffoldApiGraphTraitBehaviour<,> · ScaffoldApiGraphTraitBehaviour<,,>

Enums

ScaffoldApiHttpVerb · ScaffoldApiAuthenticationRequirement · ScaffoldApiModelUsage · ScaffoldApiPropertyAccess · ScaffoldApiTypeVisibility · ScaffoldApiPayloadType · ScaffoldApiCommandUseCase · ScaffoldApiControllerActionCapability · ScaffoldApiFilterArrayMode · ScaffoldApiFilterEntityValidation · ScaffoldApiPaginationLimitExceeded · ScaffoldApiUploadStrategy · ScaffoldApiControllerParameterLocation · ScaffoldApiGraphControllerActionRequestType · ScaffoldApiGraphControllerActionResponseType · ScaffoldApiResponseStatusCode · ScaffoldApiUserParameter

Reflected

ScaffoldApiReflectedModel · ScaffoldApiReflectedCommand · ScaffoldApiReflectedTrait

ScaffoldApiModelPropertyNameResolver<T> · ScaffoldApiTraitPropertyNameResolver<T>

Policies

IScaffoldApiNamingPolicy · ScaffoldApiNamingPolicyDefault

Exceptions

ScaffoldApiTypePropertyNotFoundException · ScaffoldDuplicateConversionsException

Attributes

ApiModelAttribute · ApiCommandAttribute

Process Concepts

ScaffoldApiProcessConceptApi · ScaffoldApiProcessConceptCollection · ScaffoldApiProcessConceptController · ScaffoldApiProcessConceptModel · ScaffoldApiProcessConceptModelAbstract · ScaffoldApiProcessConceptCommand · ScaffoldApiProcessConceptEnum · ScaffoldApiProcessConceptType · ScaffoldApiProcessConceptTrait · ScaffoldApiProcessConceptTraitBehaviour · ScaffoldApiProcessConceptRateLimit · ScaffoldApiProcessConceptResponseStatusSet


Carrot.Data.Scaffold.Process.Database

Package: Carrot.Data.Scaffold.Process.Database

Process

ScaffoldDatabaseProcess -- main process; registers 7 concepts: Database · Contexts · Entities · Enums · Abstract · Traits · TraitBehaviours

ScaffoldDatabase -- graph root: Database · Contexts · Entities · Enums · Types · Traits · TraitBehaviours; GetContexts(bool includeFullContext)

ScaffoldDatabaseOptions -- RegisterAllConversions · ReportConfiguration

Define Types

ScaffoldDatabaseDefineDatabase -- declarative single; DatabaseName · ScaffoldImpl(ScaffoldDatabaseConfigureDatabase, ILog?)

ScaffoldDatabaseDefineContext -- declarative; ContextName · Scaffold(ScaffoldDatabaseConfigureContext, ILog?)

ScaffoldDatabaseDefineContextFull -- built-in "Full" context definition

ScaffoldDatabaseDefineEntity<TEntity> -- introspective; EntityType · Scaffold(ScaffoldDatabaseConfigureEntity<TEntity>, ScaffoldDatabaseReflectedEntity, ILog?)

ScaffoldDatabaseDefineAbstract<TEntity> -- introspective abstract; base entity scaffolds applied to all concrete inheritors

ScaffoldDatabaseDefineEnum<TEnum> -- introspective; enum definitions

ScaffoldDatabaseDefineTable -- declarative; raw table definitions

ScaffoldDatabaseDefineType<TType> -- introspective; standalone type definitions

ScaffoldDatabaseDefineTrait<TTrait> -- introspective; trait definitions

ScaffoldDatabaseDefineTraitBehaviour · ScaffoldDatabaseDefineTraitBehaviour<,> · ScaffoldDatabaseDefineTraitBehaviour<,,> -- declarative; trait behaviour definitions

Configure Types

Entity

ScaffoldDatabaseConfigureEntity<TEntity> -- fluent entity config: HasPrimaryKey() · HasAlternateKey() · HasIndex() · Property() · NavigationTo<>() · NavigationLinkTable<,>() · ConfigureTable() · Annotations()

ScaffoldDatabaseConfigureEntityProperty<TEntity, TProperty> -- per-property config

ScaffoldDatabaseConfigureEntityPrimaryKey<TEntity> -- primary key config

ScaffoldDatabaseConfigureEntityAlternateKey<TEntity> -- alternate key config

ScaffoldDatabaseConfigureEntityNavigation<TEntity, TTo> -- FK navigation config

ScaffoldDatabaseConfigureEntityNavigationLinkTable<TEntity, TA, TB> -- many-to-many link table config

Database & Context

ScaffoldDatabaseConfigureDatabase -- database-level config: SetName()

ScaffoldDatabaseConfigureContext -- context-level config

Table

ScaffoldDatabaseConfigureTable -- table naming, schema

ScaffoldDatabaseConfigureTableProperty -- table column config

Properties & Indexes

ScaffoldDatabaseConfigureProperty -- base property config

ScaffoldDatabaseConfigureIndex -- index config (unique, filter, etc.)

ScaffoldDatabaseConfigureSequence -- sequence config

Functions

ScaffoldDatabaseConfigureFunction -- database function config

ScaffoldDatabaseConfigureFunctionParameter -- function parameter config

Enums / Types / Traits

ScaffoldDatabaseConfigureEnum · ScaffoldDatabaseConfigureEnumValue

ScaffoldDatabaseConfigureType

ScaffoldDatabaseConfigureTrait · ScaffoldDatabaseConfigureTraitProperty · ScaffoldDatabaseConfigureTraitPrimaryKey · ScaffoldDatabaseConfigureTraitNavigation · ScaffoldDatabaseConfigureTraitNavigationLinkTable

ScaffoldDatabaseConfigureTraitBehaviour · ScaffoldDatabaseConfigureTraitBehaviour<,> · ScaffoldDatabaseConfigureTraitBehaviour<,,>

Interfaces

IScaffoldDatabaseConfigureEntityNavigation · IScaffoldDatabaseConfigureTraitNavigation

Graph Types

Entity

ScaffoldDatabaseGraphEntity · ScaffoldDatabaseGraphEntity<TEntity> -- entity graph with properties, navigations, primary key, alternate keys, indices, foreign keys, table, disclosure

ScaffoldDatabaseGraphEntityProperty · ScaffoldDatabaseGraphEntityProperty<TEntity, TProperty> -- typed entity property

ScaffoldDatabaseGraphEntityForeignKey -- FK reference

ScaffoldDatabaseGraphEntityNavigation · ScaffoldDatabaseGraphEntityNavigationBase · ScaffoldDatabaseGraphEntityNavigationReturn

ScaffoldDatabaseGraphEntityNavigationLinkTable · ScaffoldDatabaseGraphEntityNavigationLinkTableSide · ScaffoldDatabaseGraphEntityNavigationLinkTableReturn

ScaffoldDatabaseGraphEntityNavigationShortcut · ScaffoldDatabaseGraphEntityNavigationShortcutBase · ScaffoldDatabaseGraphEntityNavigationShortcutCollection · ScaffoldDatabaseGraphEntityNavigationShortcutStep

Database & Context

ScaffoldDatabaseGraphDatabase -- database graph

ScaffoldDatabaseGraphContext · ScaffoldDatabaseGraphContextBase -- context graph with disclosure and naming

Schema Objects

ScaffoldDatabaseGraphTable · ScaffoldDatabaseGraphTableProperty -- table/column graph

ScaffoldDatabaseGraphPrimaryKey · ScaffoldDatabaseGraphAlternateKey -- key graph

ScaffoldDatabaseGraphIndex -- index graph

ScaffoldGraphForeignKey · ScaffoldDatabaseGraphEntityForeignKey -- FK graph

ScaffoldDatabaseGraphProperty -- base property graph

ScaffoldDatabaseGraphConversion -- value conversion graph

ScaffoldDatabaseGraphSequence -- sequence graph

ScaffoldDatabaseGraphFunction -- function graph

ScaffoldDatabaseGraphCollation -- collation graph

Enums / Types / Traits

ScaffoldDatabaseGraphEnum · ScaffoldDatabaseGraphEnumValue

ScaffoldDatabaseGraphType

ScaffoldDatabaseGraphTrait · ScaffoldDatabaseGraphTrait<,> · ScaffoldDatabaseGraphTrait<,,> · ScaffoldDatabaseGraphTraitProperty · ScaffoldDatabaseGraphTraitNavigation · ScaffoldDatabaseGraphTraitNavigationLinkTable · ScaffoldDatabaseGraphTraitForeignKey · ScaffoldDatabaseGraphTraitBehaviour · ScaffoldDatabaseGraphTraitBehaviour<,> · ScaffoldDatabaseGraphTraitBehaviour<,,>

Enums

ScaffoldDatabaseGraphEntityPropertyType · ScaffoldDatabaseGraphEntityPropertyScope · ScaffoldDatabaseGraphPrimaryKeyGeneration · ScaffoldDatabaseConfigureEntityNavigationScope · ScaffoldDatabaseFunctionType · ScaffoldDeleteBehavior · ScaffoldGraphNavigationCardinality · ScaffoldGraphNavigationCardinalityOutward · ScaffoldGraphNavigationCardinalityReturn · ScaffoldGraphNavigationKindReturn · ScaffoldGraphTableKind

Graph Interfaces

IScaffoldDatabaseGraph · IScaffoldDatabaseGraphContext · IScaffoldDatabaseGraphEntity · IScaffoldDatabaseGraphEntityProperty · IScaffoldDatabaseGraphEntityForeignKey · IScaffoldDatabaseGraphEnum · IScaffoldDatabaseGraphEnumValue · IScaffoldDatabaseGraphItem · IScaffoldDatabaseGraphNavigation · IScaffoldDatabaseGraphProperty · IScaffoldDatabaseGraphTable · IScaffoldDatabaseGraphTableProperty · IScaffoldDatabaseGraphTrait · IScaffoldDatabaseGraphTraitBehaviour · IScaffoldDatabaseGraphTraitProperty · IScaffoldDatabaseGraphTraitNavigation · IScaffoldDatabaseGraphTraitForeignKey · IScaffoldDatabaseGraphForeignKey · IScaffoldDatabaseDiscloseable

Graph Builders

ScaffoldDatabaseGraphContextBuilder · ScaffoldDatabaseGraphDatabaseBuilder · ScaffoldDatabaseGraphEntityBuilder · ScaffoldDatabaseGraphEntityPropertyBuilder · ScaffoldDatabaseGraphTableBuilder · ScaffoldDatabaseGraphTraitBuilder · ScaffoldDatabaseGraphTraitPropertyBuilder

Graph Providers

ScaffoldGraphEntityProvider · ScaffoldGraphTableProvider · ScaffoldGraphPropertyProvider · ScaffoldGraphForeignKeyProvider · ScaffoldGraphIndexProvider · ScaffoldGraphEntityNavigationProvider · ScaffoldGraphEntityNavigationShortcutProvider · ScaffoldGraphContextProvider · ScaffoldGraphEnumProvider · ScaffoldGraphTraitProvider · ScaffoldGraphTraitNavigationProvider · ScaffoldGraphSequenceProvider · ScaffoldGraphFunctionProvider · ScaffoldGraphFunctionParameterProvider · ScaffoldGraphCollationProvider · ScaffoldGraphAlternateKeyProvider · ScaffoldGraphCheckConstraintProvider · ScaffoldDatabaseGraphConversionProvider · ScaffoldDatabaseGraphEnumValuesProvider

Reflected

ScaffoldDatabaseReflectedEntity · ScaffoldDatabaseReflectedTrait

ScaffoldDatabaseEntityPropertyNameResolver<T> · ScaffoldDatabaseTraitPropertyNameResolver<T>

Models

ScaffoldIndexProperty · ScaffoldTableSchema · ScaffoldTemporal · ScaffoldUniqueConstraint

Naming Policy

IScaffoldDatabaseNamingPolicy · ScaffoldDatabaseNamingPolicyDefault

Naming inputs: AlternateKeyInput · CheckConstraintInput · ColumnInput · DbSetInput · DefaultConstraintInput · ForeignKeyInput · HistoryTableInput · IndexInput · PrimaryKeyInput · SchemaInput · SequenceInput · TableInput · TemporalPeriodInput · TriggerInput · UniqueConstraintInput

IdentifierCase · NameScope · ProviderKind · TruncationStyle

Process Concepts

ScaffoldDatabaseProcessConceptDatabase · ScaffoldDatabaseProcessConceptContext · ScaffoldDatabaseProcessConceptEntity · ScaffoldDatabaseProcessConceptEnum · ScaffoldDatabaseProcessConceptAbstract · ScaffoldDatabaseProcessConceptTrait · ScaffoldDatabaseProcessConceptTraitBehaviour

Exceptions

ScaffoldAlternateKeyException · ScaffoldConfigTypeNotFoundException · ScaffoldDuplicateConversionsException · ScaffoldEntityPropertyNotFound · ScaffoldGraphCompositeForeignKeyException


Carrot.Data.Scaffold.Process.Cloud

Package: Carrot.Data.Scaffold.Process.Cloud

Process

ScaffoldCloudProcess -- main process (placeholder); extends ScaffoldProcess<ScaffoldCloud, ScaffoldCloudOptions>; no concepts registered yet

ScaffoldCloud -- graph root (empty); ready for cloud resource collections

ScaffoldCloudOptions -- ReportConfiguration


Carrot.Data.Scaffold.Process.Integrations

Package: Carrot.Data.Scaffold.Process.Integrations

Process

ScaffoldIntegrationsProcess -- main process (placeholder); extends ScaffoldProcess<ScaffoldIntegrations, ScaffoldIntegrationsOptions>; no concepts registered yet

ScaffoldIntegrations -- graph root (empty); ready for integration concept collections

ScaffoldIntegrationsOptions -- ReportConfiguration

Carrot