Skip to content

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.

Filtering

  • 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

File Management

  • 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)

Generated Artefacts

  • Control which elements are generated: POCO classes, DbContext, Interface, Configuration mappings, Enumerations
  • Generate FakeDbContext and FakeDbSet for unit testing
  • Restrict fake context to Debug builds only (Settings.FakeDbContextInDebugOnlyMode)
  • Add IDbContextFactory<T> implementation for dependency injection (Settings.AddIDbContextFactory)
  • See FakeDbContext

Naming and Renaming

  • Rename tables via Settings.TableRename callback
  • Rename columns via Settings.UpdateColumn callback
  • Rename stored procedures via Settings.StoredProcedureRename callback
  • Rename stored procedure return models via Settings.StoredProcedureReturnModelRename callback
  • Rename mapping table navigation properties via Settings.MappingTableRename callback
  • Rename foreign key navigation properties via Settings.ForeignKeyName callback
  • 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

Schema

  • Control schema name prepending to class names (Settings.PrependSchemaName)
  • Per-table schema prepending control via Settings.PrependSchemaNameForTable callback
  • Per-stored-procedure schema prepending via Settings.PrependSchemaNameForStoredProcedure callback
  • Specify a default schema (Settings.DefaultSchema)

DbContext

  • Specify the DbContext class name (Settings.DbContextName)
  • Specify the DbContext base class (Settings.DbContextBaseClass) — e.g., IdentityDbContext<ApplicationUser>
  • Specify the interface name and base interfaces (Settings.DbContextInterfaceBaseClasses)
  • Choose OnConfiguring behaviour: embed connection string, use IConfiguration, or omit (Settings.OnConfiguration)
  • Chain provider-specific actions on the connection string (e.g. .EnableRetryOnFailure()) via Settings.ConnectionStringActions
  • Add extra items to the IDbContext interface (Settings.AdditionalContextInterfaceItems)
  • Generate partial classes for OnModelCreatingPartial support (Settings.DbContextClassModifiers)
  • Generate parameterless constructor (EF 6) (Settings.AddParameterlessConstructorToDbContext)
  • Set command timeout (Settings.CommandTimeout)

POCO Classes

  • Choose class and property access modifiers (Settings.EntityClassesModifiers)
  • Make classes partial for extending in hand-written files
  • Specify base classes per table via Settings.UpdateTable callback
  • 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.WriteInsideClassBody callback
  • Trim trailing spaces from char/nchar fields (EF Core only) via Settings.TrimCharFields

Data Annotations

  • Add standard data annotations automatically (Settings.UseDataAnnotations)
  • Add custom column-level attributes via Settings.UpdateColumn or column.Attributes
  • Add annotations to reverse navigation properties (Settings.AdditionalReverseNavigationsDataAnnotations)
  • Add annotations to foreign key properties (Settings.AdditionalForeignKeysDataAnnotations)
  • See Data Annotations

Comments

  • 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

Navigation Properties

  • Mark as virtual for 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)

Configuration / Mapping Classes

  • Choose configuration class name suffix (Settings.ConfigurationClassName)
  • Configure HasDefaultValueSql for columns with SQL defaults (Settings.GenerateHasDefaultValueSql)
  • Support RowVersion / timestamp columns automatically
  • Include columns that have default values (Settings.IncludeColumnsWithDefaults)

Stored Procedures and Functions

  • 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)

Enumerations

  • Generate enums from database table data (Settings.Enumerations)
  • Programmatically add enums via Settings.AddEnum callback
  • 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

Owned Entities

  • Configure owned entity mappings via Settings.AddOwnedEntityMappings callback and Settings.ApplyOwnedEntityMappings()
  • Output owned entity classes to a dedicated folder (Settings.OwnedEntityFolder)
  • Use ExcludePropertyConfiguration = true for OwnsOne/OwnsMany scenarios

JSON Columns

  • Map JSON database columns to specific C# POCO classes (Settings.AddJsonColumnMappings)
  • Support SQL Server json and PostgreSQL json/jsonb
  • Use ExcludePropertyConfiguration = true for OwnsOne/OwnsMany + ToJson() scenarios
  • See JSON column support

Views

  • Include database views (FilterSettings.IncludeViews)
  • Declare primary key columns for views via Settings.ViewProcessing callback
  • Add foreign keys between views and tables via Settings.AddExtraForeignKeys

Code Generation Output

  • 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, #pragma directives (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)

Database-Specific Features

  • 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 VECTOR and JSON native types (EF Core 10)
  • Custom column identity strategy via Settings.ColumnIdentity callback

Multiple DbContexts

Clone this wiki locally