Configuration File
The configuration yaml file controls various settings on how the source files are generated. The default configuration file name is generation.yml.
Variables
The configuration file support self referencing variables. Variables are case insensitive. See reference below for usage.
Reference
#---------------------------------#
# project section - Used for shared variables through out the configuration file
#---------------------------------#
project:
# the root namespace for the project
namespace: 'Company.{Database.Name}'
# the root directory for the project
directory: .\
# output should support nullable reference types
nullable: true
# use file scoped namespaces
fileScopedNamespace: true
#---------------------------------#
# data section - Used for configuring database connections
#---------------------------------#
database:
# the connection string to the database
connectionString: 'Data Source=(local);Initial Catalog=Tracker;Integrated Security=True'
# the database provider name. Default: SqlServer
provider: SqlServer|PostgreSQL|MySQL|Sqlite
# config name to read the connection string from the user secrets file
connectionName: 'ConnectionStrings:Generator'
# the user secret identifier, can be shared with .net core project
userSecretsId: '984ef0cf-2b22-4fd1-876d-e01499da4c1f'
# tables to include or empty to include all
tables:
- Priority
- Status
- Task
- User
# schemas to include or empty to include all
schemas:
- dbo
# exclude tables or columns: Changed in v7.x
exclude:
# list of expressions for tables to exclude, source is Schema.TableName
tables:
- exact: dbo.SchemaVersions
- regex: dbo\.SchemaVersions$
# list of expressions for columns to exclude, source is Schema.TableName.ColumnName
columns:
- exact: dbo.User.Password
- regex: dbo\.User\.Password$
# table naming hint for how existing tables are named. Default: Singular
tableNaming: Mixed|Plural|Singular
#---------------------------------#
# data section - controls the generated files for Entity Framework
#---------------------------------#
data:
# data context file configuration
context:
name: '{Database.Name}Context' # the data context class name
baseClass: DbContext # the data context base class name
namespace: '{Project.Namespace}.Data' # the data context namespace
directory: '{Project.Directory}\Data' # the data context output directory
# how to generate names for the DbSet properties on the data context. Default: Plural
propertyNaming: Preserve|Plural|Suffix
#include XML documentation
document: false
# file header
header: // Context header
# entity class file configuration
entity:
namespace: '{Project.Namespace}.Data.Entities' # the entity class namespace
directory: '{Project.Directory}\Data\Entities' # the entity class output directory
# how to generate entity class names from the table name. Default: Singular
entityNaming: Preserve|Plural|Singular
# how to generate relationship collections names for the entity. Default: Plural
relationshipNaming: Preserve|Plural|Suffix
#include XML documentation
document: false
#include mapping attributes on the entity classes
mappingAttributes: true
# Generate class names with prefixed schema name eg. dbo.MyTable = DboMyTable
prefixWithSchemaName: false
# file header
header: // Entity header
# Rename entities and properties with regular expressions. Matched expressions will be removed
renaming:
# list of regular expressions to clean entity names
entities:
- ^(sp|tbl|udf|vw)_
# list of regular expressions to clean property names
properties:
- ^{Table.Name}(?=Id|Name)
# mapping class file configuration
mapping:
namespace: '{Project.Namespace}.Data.Mapping' # the mapping class namespace
directory: '{Project.Directory}\Data\Mapping' # the mapping class output directory
#include XML documentation
document: false
temporal: false # if temporal table mapping is enabled. Default true
rowVersion: ByteArray|Long|ULong # How row versions should be mapped. Default ByteArray
# file header
header: // Mapping header
# query extension class file configuration
query:
generate: true # generate query extension class files
indexPrefix: By # Prefix for queries built from an index
uniquePrefix: GetBy # Prefix for queries built from unique indexes
namespace: '{Project.Namespace}.Data.Queries' # the mapping class namespace
directory: '{Project.Directory}\Data\Queries' # the mapping class output directory
#include XML documentation
document: false
# file header
header: // Query header
#---------------------------------#
# model section - controls the optional view model generation
#---------------------------------#
model:
# shared options between read, create and update models
shared:
namespace: '{Project.Namespace}.Domain.Models' # the model class namespace
directory: '{Project.Directory}\Domain\Models' # the mapping class output directory
# file header
header: '#pragma warning disable IDE0130 // Namespace does not match folder structure'
# regular expression of entities and properties to exclude in all models
exclude:
# list of regular expressions of entity names
entities:
- 'EmailDelivery'
- 'UserLogin'
# list of regular expressions of property names, source is Entity.Property
properties:
- 'User\.PasswordHash$'
- 'User\.ResetHash$'
# read view model class configuration
read:
generate: true # generate read model class files
name: '{Entity.Name}ReadModel' # the read model class name
baseClass: EntityReadModel # the read model base class
namespace: '{Project.Namespace}.Domain.Models'
directory: '{Project.Directory}\Domain\Models'
# Multi-line file header
header: |
// * * * * * * * * * * * *
// Read Model File Header
// * * * * * * * * * * * *
exclude:
entities: []
properties: []
# create view model class configuration
create:
generate: true # generate create model class files
name: '{Entity.Name}CreateModel' # the create model class name
baseClass: EntityCreateModel # the create model base class
namespace: '{Project.Namespace}.Domain.Models'
directory: '{Project.Directory}\Domain\Models'
header: '// create model file header' # file header
exclude:
entities: []
properties: []
# update view model class configuration
update:
generate: true # generate update model class files
name: '{Entity.Name}UpdateModel' # the update model class name
baseClass: EntityUpdateModel # the update model base class
namespace: '{Project.Namespace}.Domain.Models'
directory: '{Project.Directory}\Domain\Models'
header: '// update model file header' # file header
exclude:
entities: []
properties: []
# AutoMapper class configuration
mapper:
generate: true
name: '{Entity.Name}Profile'
baseClass: Profile
namespace: '{Project.Namespace}.Domain.Mapping'
directory: '{Project.Directory}\Domain\Mapping'
header: '// mapper file header' # file header
# FluentValidation class configuration
validator:
generate: true
name: '{Model.Name}Validator'
baseClass: 'AbstractValidator<{Model.Name}>'
namespace: '{Project.Namespace}.Domain.Validation'
directory: '{Project.Directory}\Domain\Validation'
header: '// validator file header' # file header
# script templates
script:
# collection script template with EntityContext as a variable
context:
- templatePath: '.\templates\context.csx' # path to script file
fileName: 'ContextScript.cs' # filename to save script output
directory: '{Project.Directory}\Domain\Context' # directory to save script output
namespace: '{Project.Namespace}.Domain.Context'
baseClass: ContextScriptBase
overwrite: true # overwrite existing file
merge: true # merge regions with existing file
# collection of script template with current Entity as a variable
entity:
- templatePath: '.\templates\entity.csx' # path to script file
fileName: '{Entity.Name}Script.cs' # filename to save script output
directory: '{Project.Directory}\Domain\Entity' # directory to save script output
namespace: '{Project.Namespace}.Domain.Entity'
baseClass: EntityScriptBase
overwrite: true # overwrite existing file
merge: true # merge regions with existing file
# collection script template with current Model as a variable
model:
- templatePath: '.\templates\model.csx' # path to script file
fileName: '{Model.Name}Script.cs' # filename to save script output
directory: '{Project.Directory}\Domain\Models' # directory to save script output
namespace: '{Project.Namespace}.Domain.Models'
baseClass: ModelScriptBase
overwrite: true # overwrite existing file
merge: true # merge regions with existing file
- templatePath: '.\templates\sample.csx' # path to script file
fileName: '{Model.Name}Sample.cs' # filename to save script output
directory: '{Project.Directory}\Domain\Models' # directory to save script output
namespace: '{Project.Namespace}.Domain.Models'
baseClass: ModelSampleBase
overwrite: true # overwrite existing file
merge: true # merge regions with existing file