A Content Type is the blueprint for all content. Content Types are created by combining multiple Parts

Creating a Content Type from code can be done from your migrations.cs. We'll use the AlterTypeDefintion to create or change a content type definition. The WithPart allows us to add multiple parts.

Creating a Content Type

Here we are creating a simple content type with a title

ContentDefinitionManager.AlterTypeDefinition("Training", builder =>
    builder
        .WithPart("CommonPart")
        .WithPart("TitlePart")
        .Creatable()
        .Draftable());

Creating a more Complex Content Type

In this example we are also changing some of the settings of one of the included parts

ContentDefinitionManager.AlterTypeDefinition("Training", builder =>
    builder
        .WithPart("CommonPart")
        .WithPart("TitlePart")
        .WithPart("AutoroutePart", builder => builder
            .WithSetting("AutorouteSettings.AllowCustomPattern", "true")
            .WithSetting("AutorouteSettings.AutomaticAdjustmentOnEdit", "false")
            .WithSetting("AutorouteSettings.PatternDefinitions", "[{Name:'Title', Pattern: '{Content.Slug}', Description: 'my-blog'}]")
            .WithSetting("AutorouteSettings.DefaultPatternIndex", "0"))
        .WithPart("MenuPart")
        .WithPart("TagsPart")
        .Creatable()
        .Draftable());