All Versions
Latest Version
Avg Release Cycle
41 days
Latest Release
2232 days ago

Changelog History
Page 2

  • v3.2.0 Changes

    April 15, 2019

    ๐Ÿ†• New

    • 0๏ธโƒฃ Runner: Default schema name can be set (PR #907)
    • 0๏ธโƒฃ Stripping comments can be disabled (which will become the default in 4.x, Issue #956, PR #925)
    • WithGlobalConnectionString accepting a lambda for lazy connection string query (PR #919)
    • ๐Ÿ†• New Oracle 12c support
      • Identity generator options (PR #921)
      • Maximum name length increased to 128 (PR #940)
    • Disable quoted names for PostgreSQL (Issue #958, PR #961)
      • Implemented by setting PostgresOptions.ForceQuote to false
      • Can be set with the provider option Force Quote=false
      • Default behaviour is Force Quote=true
    • PostgreSQL: Added XML type (Issue #950, PR #995)
    • Migration conditions (Issue #838, PR #990)
      • New attribute: CurrentVersionMigrationConstraint to ensure that this
        migration only gets run when the database version is greater or equal
        than the given number. This allows some kind of migrations that will only
        be executed when a conversion is necessary.
    • ๐Ÿ‘ Allow loading of maintenances without tags (Issue #983, PR #984)
    • ๐Ÿ“œ SQL Server 2008: SPARSE column option (PR #946)
    • IConventionSet loaded from given assemblies (Issue #916)

    ๐Ÿ“š Documentation

    • Clarification remark for RunnerOptions.StartVersion (PR #992)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Oracle: Fixed preview mode (PR #920, #926)
    • ๐Ÿ›  SQL Server CE: Fixed preview mode (PR #920, #926)
    • ๐Ÿ›  SQLite: Fixed byte array parameters (PR #943)
    • SQL Anywhere uses // instead of # for comments (Issue #859)
    • SQL Server: Don't use # for comments (Issue #859)
    • SQLite: Don't use # for comments (Issue #859)
    • 0๏ธโƒฃ PostgreSQL: Description generator now works with set default schema name. (Issue #971, #1000, PR #999)
    • Don't open transaction for preview (Issue #957)
    • Transaction is now always passed to Execute.WithConnection delegate (Issue #1001)


    • Alegrowin
    • coryalbert
    • dfaruque
    • elken
    • groogiam
    • hansehe
    • igitur
    • Jogge
    • jzabroski
    • PhenX
    • poimis
    • TerraVenil
    • zamoa
  • v3.1.3 Changes

    June 25, 2018

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Migration loader doesn't try to load profiles anymore (fixes #904)
  • v3.1.2 Changes

    June 21, 2018

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Avoid duplicate Dispose calls (fixes #901)
  • v3.1.1 Changes

    June 11, 2018

    ๐Ÿ›  Fixed

    • ๐Ÿ“ฆ The FluentMigrator.Console package doesn't depend on the FluentMigrator package, because it's already included
  • v3.1.0 Changes

    June 01, 2018

    โž• Added

    • ๐Ÿ†• New IFilteringMigrationSource to avoid unnecessary instantiations
    • ๐Ÿ†• New IVersionTableMetaDataSourceItem to specify multiple places to search for version table metadata
    • dotnet-fm and Migrate.exe are now referencing FSharp.Core which should ease the problems with F# (issue #883).
    • ๐Ÿ†• New configuration for types from assemblies (see below)

    ๐Ÿ”„ Changed

    • #877: Connection specific information should be resolved as scoped
    • #884: Embedded script cannot be found in assemblies on .NET Core
    • โฌ†๏ธ #888: VersionTable not changed after upgrading to 3.0
    • Query IConfigurationRoot for the connection string if IConfiguration couldn't be found

    ๐Ÿ›  Fixed

    • #886: Using profiles in 3.x versions
    • ๐Ÿ‘ #892: Nullable types are not supported in MSBuild runner
    • #890: OracleManaged Migrations fail with runtime Exceptions


    dotnet-fm now uses the Oracle beta ADO.NET driver

    ๐Ÿš€ Oracle plans to release a non-beta version of the driver in Q3, but ๐ŸŽ it's the only Oracle driver that works under Linux/MacOS. The console ๐Ÿ tool (Migrate.exe) is more Windows-centric and will therefore keep using the standard Oracle ADO.NET library. The dotnet-fm is mostly ๐Ÿ used on non-Windows platforms and is therefore predestinated to use the new beta driver.

    The statement from Oracle can be found on the Oracle website.

    The console tool will switch to the new driver when it becomes stable.

    ๐Ÿ†• New configuration options

    var services = new ServiceCollection()
        .ConfigureRunner(rb => rb
            // There is a fluent interface to configure the targets for ScanIn

    ๐Ÿ”ง Configurations for ScanIn(assemblies):

      |                                           ^
      |                                           |
      +- For -+- All() ---------------------------+
      ^       |                                   ^
      |       |                                   |
      |       +- Migrations() ------------+-->+-->+
      |       |                           ^   |
      |       |                           |   |
      |       +- VersionTableMetaData() --+   |
      |       |                           ^   |
      |       |                           |   |
      |       +- EmbeddedResources() -----+   |
      |                                       |
      |                                       v


    var services = new ServiceCollection()
        .ConfigureRunner(rb => rb
            // There is a fluent interface to configure the targets for ScanIn

    Dependency injection changes (issue #877)

    ๐Ÿ‘Œ Supported scenario

    This allows the reconfiguration of the connection string/used database at run-time.

    Applies to
    • Connection string
    • ๐Ÿ–จ Processor/generator selection
    • Type filters
    ๐Ÿ”„ Changes

    The following option classes are now resolved using IOptionSnapshot<T>:

    • ProcessorOptions
    • SelectingProcessorAccessorOptions
    • SelectingGeneratorAccessorOptions
    • TypeFilterOptions

    The following services are now scoped instead of singleton:

    • ๐Ÿ“‡ IVersionTableMetaDataAccessor
    • ๐Ÿ“‡ IVersionTableMetaData
    • IMigrationSource
    • IMigrationInformationLoader

    The MigrationSource now consumes all registered IMigrationSourceItem instances.

  • v3.0.0 Changes

    May 07, 2018

    ๐Ÿ“š The new documentation is online on

    โฌ†๏ธ Upgrade Guide


    What changed?

    ๐Ÿ’ฅ Breaking changes

    • ๐Ÿ‘ #850: Set minimum .NET Framework version to 4.6.1. Older versions aren't supported anymore.
    • โฑ ProcessorOptions.Timeout is now of type System.TimeSpan?
    • ๐Ÿšง MigrationRunner.MaintenanceLoader is now read-only
    • MigrationRunner.CaughtExceptions returns now a IReadOnlyList
    • dotnet-fm is now a global tool and requires at least the .NET Core tooling 2.1-preview2

    โž• Added

    ๐Ÿ›  Fixed

    • #767: Append NULL constraint for custom types for PostgreSQL and SQL Server

    ๐Ÿ—„ Deprecated

    • IAssemblyCollection and all its implementations
    • IAnnouncer and all its implementations
    • IMigrationRunnerConventions.GetMigrationInfo
    • IProfileLoader.ApplyProfiles()
    • IProfileLoader.FindProfilesIn
    • IMigrationProcessorOptions
    • IMigrationProcessorFactory and all its implementations
    • IRunnerContext and RunnerContext, replaced by several dedicated options classes:
      • RunnerOptions are the new RunnerContext (minus some properties extracted into separate option classes)
      • ProcessorOptions for global processor-specific options
      • GeneratorOptions to allow setting the compatibility mode
      • TypeFilterOptions for filtering migrations by namespace
      • AnnouncerOptions to enable showing SQL statements and the elapsed time
      • SelectingProcessorAccessorOptions allows selection of a processor by its identifier
      • SelectingGeneratorAccessorOptions allows selection of a generator by its identifier
      • AppConfigConnectionStringAccessorOptions to allow leading the connection strings from the *.config xml file (deprecated, only for transition to Microsoft.Extensions.Configuration)
    • CompatabilityMode (is now ComatibilityMode)
    • ApplicationContext in various interfaces/classes
    • ManifestResourceNameWithAssembly replaced by ValueTuple
    • MigrationGeneratorFactory
    • MigrationProcessorFactoryProvider
    • ITypeMap.GetTypeMap(DbType, int, int)
    • IDbFactory: Only the implementations will remain
    • Several non-DI constructors

    โž• Additional information

    Connection string handling

    The library assumes that in ProcessorOptions.ConnectionString is either a connection string or
    a connection string identifier. This are the steps to load the real connection string.

    • Queries all IConnectionStringReader implementations
      • When a connection string is returned by one of the readers, then this
        connection string will be used
      • When no connection string is returned, try reading from the next IConnectionStringReader
    • When no reader returned a connection string, then return ProcessorOptions.ConnectionString

    The connection string stored in ProcessorOptions.ConnectionString might be overridden
    by registering the IConnectionStringReader instance PassThroughConnectionStringReader
    as scoped service.

    When no connection string could be found, the SelectingProcessorAccessor returns
    a ConnectionlessProcessor instead of the previously selected processor.

    Instantiating a migration runner

    // Initialize the servicesvar serviceProvider = new ServiceCollection() .AddLogging(lb =\> lb.AddFluentMigratorConsole()) .AddFluentMigratorCore() .ConfigureRunner( builder =\> builder .AddSQLite() .WithGlobalConnectionString(connectionString) .WithMigrationsIn(typeof(AddGTDTables).Assembly)) .BuildServiceProvider();// Instantiate the runnervar runner = serviceProvider.GetRequiredService\<IMigrationRunner\>();// Run the migrationsrunner.MigrateUp();

    This adds the FluentMigrator services to the service collection and
    ๐Ÿ”ง configures the runner to use SQLite with the given connection string,
    announcer and migration assembly.

    Now you can instantiate the runner using the built service provider and use
    its functions.

  • v2.0.7 Changes

    April 27, 2018

    โž• Added

    • #856 New constructors to enable passing a custom expression convention set
  • v2.0.6 Changes

    April 24, 2018

    ๐Ÿ›  Fixed

    • #859: The pound sign is only recognized when it's only preceeded by whitespace
  • v2.0.5 Changes

    April 23, 2018

    โž• Added

    • ๐Ÿ— net452 build for the console runner to enable usage of the latest MySQL ADO.NET provider

    ๐Ÿ”„ Changed

    • โž• Added more ADO.NET providers for the console
    • The tools are in platform-specific sub-directories again (e.g. tools/net452/x86/Migrate.exe)

    ๐Ÿ‘ This has become necessary to enable a better out-of-the-box experience for the migration tool.

  • v2.0.4 Changes

    April 23, 2018

    Unlisted due to unintentional breaking change.