-
Notifications
You must be signed in to change notification settings - Fork 224
Full Control Over the Generated Code
Simon Hughes edited this page Mar 27, 2026
·
2 revisions
The generator provides extensive customisation through settings and callbacks. Here is a comprehensive list of what you can control.
- Filter tables, views, schemas, columns, stored procedures, and TVFs by regex or custom code
- Include/exclude views, synonyms, stored procedures, table-valued functions, scalar-valued functions
- See Filtering
- Generate all output in a single file or as separate files per class
- Organise generated files into sub-folders (Entities, Configuration, Interface, OwnedEntities, etc.)
- Append sub-folder name to namespace automatically (
Settings.UseFolderNameInNamespace) - Generate for .NET Framework (VisualStudio file manager) or .NET Core (EfCore file manager)
- Control which elements are generated: POCO classes, DbContext, Interface, Configuration mappings, Enumerations
- Generate
FakeDbContextandFakeDbSetfor unit testing - Restrict fake context to Debug builds only (
Settings.FakeDbContextInDebugOnlyMode) - Add
IDbContextFactory<T>implementation for dependency injection (Settings.AddIDbContextFactory) - See FakeDbContext
- Rename tables via
Settings.TableRenamecallback - Rename columns via
Settings.UpdateColumncallback - Rename stored procedures via
Settings.StoredProcedureRenamecallback - Rename stored procedure return models via
Settings.StoredProcedureReturnModelRenamecallback - Rename mapping table navigation properties via
Settings.MappingTableRenamecallback - Rename foreign key navigation properties via
Settings.ForeignKeyNamecallback - Append a suffix to all entity class names (
Settings.TableSuffix) - Use PascalCase for tables and columns (
Settings.UsePascalCase) - Use PascalCase for enum members (
Settings.UsePascalCaseForEnumMembers) - English pluralisation with custom dictionary entries
- Control schema name prepending to class names (
Settings.PrependSchemaName) - Per-table schema prepending control via
Settings.PrependSchemaNameForTablecallback - Per-stored-procedure schema prepending via
Settings.PrependSchemaNameForStoredProcedurecallback - Specify a default schema (
Settings.DefaultSchema)
- Specify the
DbContextclass name (Settings.DbContextName) - Specify the
DbContextbase class (Settings.DbContextBaseClass) — e.g.,IdentityDbContext<ApplicationUser> - Specify the interface name and base interfaces (
Settings.DbContextInterfaceBaseClasses) - Choose
OnConfiguringbehaviour: embed connection string, useIConfiguration, or omit (Settings.OnConfiguration) - Chain provider-specific actions on the connection string (e.g.
.EnableRetryOnFailure()) viaSettings.ConnectionStringActions - Add extra items to the
IDbContextinterface (Settings.AdditionalContextInterfaceItems) - Generate partial classes for
OnModelCreatingPartialsupport (Settings.DbContextClassModifiers) - Generate parameterless constructor (EF 6) (
Settings.AddParameterlessConstructorToDbContext) - Set command timeout (
Settings.CommandTimeout)
- Choose class and property access modifiers (
Settings.EntityClassesModifiers) - Make classes
partialfor extending in hand-written files - Specify base classes per table via
Settings.UpdateTablecallback - Add custom attributes to classes and columns
- Use C# 6 property initialisers (
Settings.UsePropertyInitialisers) - Add field name constants (
Settings.IncludeFieldNameConstants) - Use nullable shorthand syntax (
Settings.NullableShortHand) - Allow nullable strings /
#nullable enable(Settings.AllowNullStrings) - Nullable reverse navigation properties (
Settings.NullableReverseNavigationProperties) - Use private setters for computed columns (
Settings.UsePrivateSetterForComputedColumns) - Order properties by ordinal or alphabetically (
Settings.OrderProperties) - Append suffix to all entity class names (
Settings.TableSuffix) - Partial properties (C# 13+) via
column.IsPartial = true - Inject arbitrary code inside a POCO class body via
Settings.WriteInsideClassBodycallback - Trim trailing spaces from
char/ncharfields (EF Core only) viaSettings.TrimCharFields
- Add standard data annotations automatically (
Settings.UseDataAnnotations) - Add custom column-level attributes via
Settings.UpdateColumnorcolumn.Attributes - Add annotations to reverse navigation properties (
Settings.AdditionalReverseNavigationsDataAnnotations) - Add annotations to foreign key properties (
Settings.AdditionalForeignKeysDataAnnotations) - See Data Annotations
- Add comments with original DB names, PKs, FKs, and lengths (
Settings.IncludeComments) - Add extended property comments (
Settings.IncludeExtendedPropertyComments) - Use
/// <summary>blocks or end-of-line comments
- Mark as
virtualfor lazy loading (Settings.UseLazyLoading) - Configure collection interface and type (
Settings.CollectionInterfaceType,Settings.CollectionType) - Control foreign key navigation property names (
Settings.ForeignKeyName) - Filter or exclude foreign keys (
Settings.ForeignKeyFilterFunc) - Add attributes to foreign key properties (
Settings.ForeignKeyAnnotationsProcessing) - Add extra foreign key relationships not in the database (
Settings.AddExtraForeignKeys)
- Choose configuration class name suffix (
Settings.ConfigurationClassName) - Configure
HasDefaultValueSqlfor columns with SQL defaults (Settings.GenerateHasDefaultValueSql) - Support RowVersion / timestamp columns automatically
- Include columns that have default values (
Settings.IncludeColumnsWithDefaults)
- Include/exclude stored procedures, TVFs, scalar functions
- Override return types for stored procedures (
Settings.StoredProcedureReturnTypes) - Handle stored procs with temp tables (
Settings.ReadStoredProcReturnObjectException) - Modify return models after reading (
Settings.ReadStoredProcReturnObjectCompleted) - Generate result sets as fields or properties (
Settings.UsePropertiesForStoredProcResultSets) - Merge identical result sets (
Settings.MergeMultipleStoredProcModelsIfAllSame)
- Generate enums from database table data (
Settings.Enumerations) - Programmatically add enums via
Settings.AddEnumcallback - Add
[Description]attributes from a database column or auto-generated from name - Group multiple enums in one table using
GroupField - Replace column types with enum types via
Settings.AddEnumDefinitions - Customise enum and member attributes via
Settings.UpdateEnum,Settings.UpdateEnumMember
- Configure owned entity mappings via
Settings.AddOwnedEntityMappingscallback andSettings.ApplyOwnedEntityMappings() - Output owned entity classes to a dedicated folder (
Settings.OwnedEntityFolder) - Use
ExcludePropertyConfiguration = trueforOwnsOne/OwnsManyscenarios
- Map JSON database columns to specific C# POCO classes (
Settings.AddJsonColumnMappings) - Support SQL Server
jsonand PostgreSQLjson/jsonb - Use
ExcludePropertyConfiguration = trueforOwnsOne/OwnsMany+ToJson()scenarios - See JSON column support
- Include database views (
FilterSettings.IncludeViews) - Declare primary key columns for views via
Settings.ViewProcessingcallback - Add foreign keys between views and tables via
Settings.AddExtraForeignKeys
- Target EF Core 8, 9, 10, or EF 6 (
Settings.TemplateType) - Choose file-based (Mustache) or built-in templates
- Select C# output language (
Settings.GenerationLanguage) - Suppress
#region,namespace,#pragmadirectives (Settings.UseRegions,Settings.UseNamespace,Settings.UsePragma) - Add ReSharper disable comments (
Settings.UseResharper) - Include
[GeneratedCode]attribute (Settings.IncludeCodeGeneratedAttribute) - Include the generator version number in generated output (
Settings.IncludeGeneratorVersionInCode) - Additional namespaces, file header/footer text (
Settings.AdditionalNamespaces,Settings.AdditionalFileHeaderText,Settings.AdditionalFileFooterText) - Override the generated file extension (
Settings.FileExtension)
- Spatial / geography types (
Settings.DisableGeographyTypes) — see Spatial Types - HierarchyId — see HierarchyId
- RowVersion / timestamp concurrency tokens — see RowVersion and TimeStamp Columns
- HiLo sequences for identity columns (
Settings.HiLoSequences) - SQL Server 2014 query trace flag (
Settings.IncludeQueryTraceOn9481Flag) - Extended properties as comments or attributes (
column.ExtendedProperties) - SQL Server 2025
VECTORandJSONnative types (EF Core 10) - Custom column identity strategy via
Settings.ColumnIdentitycallback
- Generate many
DbContextclasses in a single pass from database-stored settings - Per-context table/column/schema filtering
- Per-context templates
- See Generating multiple database contexts in a single go