Skip to content

Latest commit

 

History

History
349 lines (260 loc) · 9.41 KB

fluent-api-create.md

File metadata and controls

349 lines (260 loc) · 9.41 KB
uid title
tech-fluent-api-create
Fluent API (Create)

ICreateExpressionRoot

Create -+- Schema ------------- name --- ICreateSchemaOptionsSyntax ---
        |
        +- Table -------------- name --- ICreateTableWithColumnOrSchemaOrDescriptionSyntax ---
        |
        +- Column ------------- name --- ICreateColumnOnTableSyntax ---
        |
        +- ForeignKey -------+--------+- ICreateForeignKeyFromTableSyntax ---
        |                    |        |
        |                    +- name -+
        |
        +- Index ------------+--------+- ICreateIndexForTableSyntax ---
        |                    |        |
        |                    +- name -+
        |
        +- Sequence ----------- name --- ICreateSequenceInSchemaSyntax ---
        |
        +- PrimaryKey -------+--------+- ICreateConstraintOnTableSyntax ---
        |                    |        |
        |                    +- name -+
        |
        +- UniqueConstraint -+--------+- ICreateConstraintOnTableSyntax ---
                             |        |
                             +- name -+

Schema

ICreateSchemaOptionsSyntax

Note

Extension point

Table

ICreateTableWithColumnOrSchemaOrDescriptionSyntax

--------+-----------------------------+- ICreateTableWithColumnOrSchemaSyntax ---
        |                             |
        +- WithDescription ---- name -+

ICreateTableWithColumnOrSchemaSyntax

--------+-----------------------------+- ICreateTableWithColumnSyntax ---
        |                             |
        +- InSchema ----------- name -+

ICreateTableWithColumnSyntax

---------- WithColumn --------- name --- ICreateTableColumnAsTypeSyntax ---

ICreateTableColumnAsTypeSyntax

---------- IColumnTypeSyntax ---- TNext: ICreateTableColumnOptionOrWithColumnSyntax ---
  • IColumnTypeSyntax

ICreateTableColumnOptionOrWithColumnSyntax

--------+- ICreateTableWithColumnSyntax -------------------------------------------------------------------+-
        |                                                                                                  |
        +- IColumnOptionSyntax -+- TNext: ICreateTableColumnOptionOrWithColumnSyntax ----------------------+
                                |                                                                          |
                                +- TNextFk: ICreateTableColumnOptionOrForeignKeyCascadeOrWithColumnSyntax -+
  • IColumnOptionSyntax

ICreateTableColumnOptionOrForeignKeyCascadeOrWithColumnSyntax

--------+--> ICreateTableColumnOptionOrWithColumnSyntax
        |
        +- IForeignKeyCascadeSyntax -+--> TNext: ICreateTableColumnOptionOrWithColumnSyntax
                                     |
                                     +--> TNextFk: ICreateTableColumnOptionOrForeignKeyCascadeOrWithColumnSyntax
  • IForeignKeyCascadeSyntax

Column

ICreateColumnOnTableSyntax

---------- OnTable --- name ---> ICreateColumnAsTypeOrInSchemaSyntax

ICreateColumnAsTypeOrInSchemaSyntax

--------+---------------------+--> ICreateColumnAsTypeSyntax
        |                     |
        +- InSchema --- name -+

ICreateColumnAsTypeSyntax

---------- IColumnTypeSyntax ---> ICreateColumnOptionSyntax

ICreateColumnOptionSyntax

--------+-------------------------------+- IColumnOptionSyntax -+--> TNext: ICreateColumnOptionSyntax
        |                               |                       |
        +- SetExistingRowsTo --- value -+                       +--> TNextFk: ICreateColumnOptionOrForeignKeyCascadeSyntax
  • IColumnOptionSyntax

ICreateColumnOptionOrForeignKeyCascadeSyntax

--------+--> ICreateColumnOptionSyntax
        |
        +- IForeignKeyCascadeSyntax -+--> TNext: ICreateColumnOptionSyntax
                                     |
                                     +--> TNextFk: ICreateColumnOptionOrForeignKeyCascadeSyntax
  • IForeignKeyCascadeSyntax

ForeignKey

ICreateForeignKeyFromTableSyntax

---------- FromTable --- table ---> ICreateForeignKeyForeignColumnOrInSchemaSyntax

ICreateForeignKeyForeignColumnOrInSchemaSyntax

--------+---------------------+--> ICreateForeignKeyForeignColumnSyntax
        |                     |
        +- InSchema --- name -+

ICreateForeignKeyForeignColumnSyntax

--------+- ForeignColumn --- column ---+--> ICreateForeignKeyToTableSyntax
        |                              |
        +- ForeignColumns --- columns -+

ICreateForeignKeyToTableSyntax

---------- ToTable name --> ICreateForeignKeyPrimaryColumnOrInSchemaSyntax

ICreateForeignKeyPrimaryColumnOrInSchemaSyntax

--------+-----------------+--> ICreateForeignKeyPrimaryColumnSyntax
        |                 |
        +- InSchema name -+

ICreateForeignKeyPrimaryColumnSyntax

--------+- PrimaryColumn --- column ---+--> ICreateForeignKeyCascadeSyntax
        |                              |
        +- PrimaryColumns --- columns -+

ICreateForeignKeyCascadeSyntax

--------+- OnDeleteOrUpdate --- rule ----| (end)
        |
        +- OnDelete --- rule ---------+--> ICreateForeignKeyCascadeSyntax
        |                             |
        +- OnUpdate --- rule ---------+

Index

ICreateIndexForTableSyntax

---------- OnTable --- name ---> ICreateIndexOnColumnOrInSchemaSyntax

ICreateIndexOnColumnOrInSchemaSyntax

--------+---------------------+--> ICreateIndexOnColumnSyntax
        |                     |
        +- InSchema --- name -+

ICreateIndexOnColumnSyntax

--------+- OnColumn --- name ---> ICreateIndexColumnOptionsSyntax
        |
        +- WithOptions ---------> ICreateIndexOptionsSyntax

ICreateIndexColumnOptionsSyntax

--------+- Ascending --+--> ICreateIndexMoreColumnOptionsSyntax
        |              |
        +- Descending -+
        |
        +- Unique --------> ICreateIndexColumnUniqueOptionsSyntax

ICreateIndexOptionsSyntax

--------+- Unique -------+--> ICreateIndexOnColumnSyntax
        |                |
        +- NonClustered -+
        |                |
        +- Clustered ----+

ICreateIndexMoreColumnOptionsSyntax

Note

Extension point

--------+---------------------+--> ICreateIndexOnColumnSyntax
        |                     |
        +- get_CurrentColumn -+

ICreateIndexColumnUniqueOptionsSyntax

Note

Extension point

--------+---------------------+--> ICreateIndexOnColumnSyntax
        |                     |
        +- get_CurrentColumn -+

Sequence

ICreateSequenceInSchemaSyntax

--------+---------------------+--> ICreateSequenceSyntax
        |                     |
        +- InSchema --- name -+

ICreateSequenceSyntax

--------+-----------------------------+--> ICreateSequenceSyntax
        |                             |
        +- IncrementBy --- increment -+
        |                             |
        +- MinValue --- minValue -----+
        |                             |
        +- MaxValue --- maxValue -----+
        |                             |
        +- StartWith --- startWith ---+
        |                             |
        +- Cache --- value -----------+
        |                             |
        +- Cycle ---------------------+

PrimaryKey/Unique Constraint

ICreateConstraintOnTableSyntax

---------- OnTable --- name ----> ICreateConstraintWithSchemaOrColumnSyntax

ICreateConstraintWithSchemaOrColumnSyntax

--------+- ICreateConstraintColumnsSyntax
        |
        +- ICreateConstraintWithSchemaSyntax

Expanded:

--------+-----------------------+--+- Column --- name ---+--> ICreateConstraintOptionsSyntax
        |                       |  |                     |
        +- WithSchema --- name -+  +- Columns --- names -+

ICreateConstraintColumnsSyntax

--------+- Column --- name ---+--> ICreateConstraintOptionsSyntax
        |                     |
        +- Columns --- names -+

ICreateConstraintWithSchemaSyntax

---------- WithSchema --- name ----> ICreateConstraintColumnsSyntax

ICreateConstraintOptionsSyntax

Note

Extension point