Example #1
0
        /// <summary>
        /// Получить список столбцов которые будут удалены
        /// </summary>
        /// <param name="configuration">Конфигурация миграций</param>
        /// <returns>Список столбцов которые будут удалены</returns>
        private IEnumerable <ColumnInfo> GetDroppingColumnFromMigrationsConfiguration(DbMigrationsConfiguration configuration)
        {
            var droppingColumn = new List <ColumnInfo>();

            if (configuration != null)
            {
                var migrator = new DbMigrator(configuration);

                var pendingMigrations = migrator.GetPendingMigrations();
                if (pendingMigrations.Any())
                {
                    var targetMigration = pendingMigrations.Last();

                    var    scriptor = new MigratorScriptingDecorator(migrator);
                    string script   = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: targetMigration);
                    var    parts    = script.Split(new[] { "\r\n\r\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); //разбиваем скрипт по миграциям
                    parts.RemoveAll(p => p.StartsWith("INSERT [dbo].[__MigrationHistory]") || p.StartsWith("VALUES"));            //удаляем вставки в MigrationHistory

                    var dropColumnParts = parts.Where(p => p.Contains("DROP COLUMN"));                                            //находим DROP COLUMN
                    foreach (var dropColumnPart in dropColumnParts)
                    {
                        Regex    regex           = new Regex("ALTER TABLE (?<schemaWithTable>.*) DROP COLUMN (?<column>.*)");
                        Match    match           = regex.Match(dropColumnPart);
                        string[] schemaWithTable = match.Groups["schemaWithTable"].Value.Split(new[] { '.', '[', ']' }, StringSplitOptions.RemoveEmptyEntries);
                        string   schema          = schemaWithTable.First();
                        string   table           = schemaWithTable.Last();
                        string   column          = match.Groups["column"].Value.Trim(new[] { '[', ']' });

                        droppingColumn.Add(new ColumnInfo(new TableInfo(schema, table), column));
                    }
                }
            }
            return(droppingColumn);
        }
Example #2
0
        protected string GetIdempotentMigrationSql(DbMigrationsConfiguration migrationConfiguration)
        {
            MigratorScriptingDecorator loggingScripter = new MigratorScriptingDecorator(CreateLoggingMigrator(migrationConfiguration));
            string sql = loggingScripter.ScriptUpdate(DbMigrator.InitialDatabase, null);

            return(sql);
        }
Example #3
0
        public void Can_script_middle_migration_with_leading_automatic_migration(bool whenDatabaseExists)
        {
            ResetDatabase();

            var migrator1 = CreateMigrator <ShopContext_v1>();
            var version1  = new MigrationScaffolder(migrator1.Configuration).Scaffold("Version1");

            CreateMigrator <ShopContext_v1>(scaffoldedMigrations: version1).Update();

            CreateMigrator <ShopContext_v2>(automaticDataLossEnabled: true, scaffoldedMigrations: version1).Update();

            var migrator2 = CreateMigrator <ShopContext_v3>(scaffoldedMigrations: version1);
            var version3  = new MigrationScaffolder(migrator2.Configuration).Scaffold("Version3");

            var migrator3 = CreateMigrator <ShopContext_v3>(
                automaticDataLossEnabled: true, scaffoldedMigrations: new[] { version1, version3 });

            migrator3.Update();

            var scriptingDecorator = new MigratorScriptingDecorator(migrator3);

            if (!whenDatabaseExists)
            {
                ResetDatabase();
            }

            // Act
            var script = scriptingDecorator.ScriptUpdate(version1.MigrationId, version3.MigrationId);

            // Assert
            Assert.False(script.Contains(CreateMetadataStatement));
            Assert.False(script.Contains("Version1"));
            Assert.True(script.Contains("AutomaticMigration"));
            Assert.True(script.Contains("Version3"));
        }
Example #4
0
        public static void Initialize <TDbContext>(Func <TDbContext> contextFactory, DbMigrationsConfiguration <TDbContext> contextConfiguration) where TDbContext : DbContext
        {
            Factory       = contextFactory;
            Configuration = contextConfiguration;

            var tableTypes = typeof(TDbContext).GetProperties().Where(x => x.PropertyType.FullName.Contains("System.Data.Entity.DbSet")).Select(x => x.PropertyType.GenericTypeArguments.First()).ToList();

            var migrator        = new DbMigrator(Configuration);
            var scriptor        = new MigratorScriptingDecorator(migrator);
            var migrationScript = scriptor.ScriptUpdate("0", null);

            using (var context = contextFactory())
            {
                var baseScripts = ((IObjectContextAdapter)context).ObjectContext.CreateDatabaseScript();

                Scripts = tableTypes.ToDictionary(x => x, x => {
                    var tableName = GetFullTableNameAndSchema(x, context);
                    return(new FenixScript
                    {
                        TableScript = ExtractTableScript(tableName, baseScripts),
                        FkScripts = ExtractFkScripts(tableName, baseScripts),
                        IndexScripts = ExtractIndexScripts(tableName, migrationScript)
                    });
                });
            }
        }
Example #5
0
        private string GetScriptFromMigrations()
        {
            var type      = typeof(T);
            var fenixAttr = type.CustomAttributes.Where(x => x.AttributeType == typeof(FenixAttribute)).FirstOrDefault();

            if (fenixAttr != null)
            {
                var migrations = (fenixAttr.ConstructorArguments.First().Value as ReadOnlyCollection <CustomAttributeTypedArgument>).Select(x => x.Value.ToString()).ToArray();

                var migrator      = new DbMigrator(Configuration);
                var allMigrations = migrator.GetLocalMigrations().ToList();
                var scriptor      = new MigratorScriptingDecorator(migrator);

                string allMigrationScripts = null;
                foreach (var migration in migrations)
                {
                    var    target      = allMigrations.Where(x => x.Contains(migration)).First();
                    var    targetIndex = allMigrations.IndexOf(target);
                    var    source      = targetIndex == 0 ? "0" : Regex.Match(allMigrations.Where(x => allMigrations.IndexOf(x) == (targetIndex - 1)).First(), @"(?<=\d+_).+").Value;
                    string script      = scriptor.ScriptUpdate(source, target);
                    allMigrationScripts += $"{ExtractScriptFromMigration(script, source)}{"\r\n"}";
                }
                return(allMigrationScripts.Trim());
            }
            return(null);
        }
Example #6
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            var migrator = GetMigrator();

            var migrationBundles = migrator.GetMigrationPlan();

            if (!migrationBundles.Any())
            {
                WriteWarning("No pending migration.");
                return;
            }

            var bundleNumber = 1;

            foreach (var migrationBundle in migrationBundles)
            {
                WriteObject(string.Format("\n-- Part {0}: {1}\n--\tContains:", bundleNumber++, migrationBundle));

                foreach (var applyingMigration in migrationBundle.MigrationNames)
                {
                    WriteObject(string.Format("--\t\t-{0}", applyingMigration));
                }

                var scriptor = new MigratorScriptingDecorator(migrationBundle.GetNewMigrator());
                var script   = scriptor.ScriptUpdate(migrationBundle.SourceMigrationName, migrationBundle.TargetMigrationName);

                WriteObject(script);
            }
        }
Example #7
0
        protected string GetMigrationSql(DbMigrationsConfiguration migrationConfiguration, string migrationName)
        {
            MigratorScriptingDecorator loggingScripter = new MigratorScriptingDecorator(CreateLoggingMigrator(migrationConfiguration));
            string sql = loggingScripter.ScriptUpdate(null, migrationName);

            return(sql);
        }
Example #8
0
        protected string GetRollbackAllSql(DbMigrationsConfiguration migrationConfiguration)
        {
            MigratorScriptingDecorator loggingScripter = new MigratorScriptingDecorator(CreateLoggingMigrator(migrationConfiguration));
            string sql = loggingScripter.ScriptUpdate(null, DbMigrator.InitialDatabase);

            return(sql);
        }
        private void Can_script_first_migration_with_leading_automatic_migration(bool whenDatabaseExists)
        {
            ResetDatabase();

            CreateMigrator <ShopContext_v2>().Update();

            var migrator1 = CreateMigrator <ShopContext_v3>();
            var version2  = new MigrationScaffolder(migrator1.Configuration).Scaffold("Version2");

            var migrator2 = CreateMigrator <ShopContext_v3>(scaffoldedMigrations: version2);

            migrator2.Update();

            if (!whenDatabaseExists)
            {
                ResetDatabase();
            }

            var scriptingDecorator
                = new MigratorScriptingDecorator(CreateMigrator <ShopContext_v3>(scaffoldedMigrations: version2));

            // Act
            var script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, version2.MigrationId);

            // Assert
            Assert.True(script.Contains(CreateMetadataStatement));
            Assert.True(script.Contains("AutomaticMigration"));
            Assert.True(script.Contains("Version2"));
        }
Example #10
0
        public void CanScriptMigration()
        {
            var    migrator = new MigratorScriptingDecorator(new DbMigrator(new AutoConfiguration()));
            string sql      = migrator.ScriptUpdate("201501032325042_Merge BaseModel3", "201501110901388_Add CustomUserRole");

            Console.Out.WriteLine(sql);
        }
Example #11
0
        private void ExecuteDatabaseMigration(Func <DbMigrator> getMigrator, SqlConnection sqlConnection, string accessToken)
        {
            var migrator             = getMigrator();
            var migratorForScripting = getMigrator();

            OverwriteSqlConnection(migrator, sqlConnection, accessToken);
            OverwriteSqlConnection(migratorForScripting, sqlConnection, accessToken);

            var sqlConnectionDataSource = sqlConnection.DataSource;
            var sqlConnectionDatabase   = sqlConnection.Database;

            Logger.LogInformation("Target database is: {DataSource}/{Database}.", sqlConnectionDataSource, sqlConnectionDatabase);
            var pendingMigrations = migrator.GetPendingMigrations();

            if (pendingMigrations.Count() > 0)
            {
                var databaseMigrations = migrator.GetDatabaseMigrations().ToList();
                databaseMigrations.Reverse();
                var localMigrations = migrator.GetLocalMigrations().ToList();
                try
                {
                    CheckIsValidMigration(databaseMigrations, localMigrations);
                }
                catch (Exception e)
                {
                    Logger.LogError(0, e, "Validation check of migration context failed.");
                    throw;
                }

                Logger.LogInformation("Validation check of migration context finished successfully.");
                Logger.LogInformation("Applying pending migrations: \n {PendingMigrations}.", String.Join("\n", pendingMigrations));

                var migratorScripter = new MigratorScriptingDecorator(migratorForScripting);
                var migrationScripts = migratorScripter.ScriptUpdate(sourceMigration: null, targetMigration: null);
                Logger.LogInformation("Applying explicit migration SQL scripts: \n {migrationScripts}.", migrationScripts);

                try
                {
                    Logger.LogInformation("Executing migrations...");

                    migrator.Update();

                    Logger.LogInformation("Finished executing {pendingMigrationsCount} migrations successfully on the target database {DataSource}/{Database}.",
                                          pendingMigrations.Count(),
                                          sqlConnectionDataSource,
                                          sqlConnectionDatabase);
                }
                catch (Exception e)
                {
                    Logger.LogError(0, e, "Failed to execute migrations on the target database {DataSource}/{Database}.",
                                    sqlConnectionDataSource,
                                    sqlConnectionDatabase);
                    throw;
                }
            }
            else
            {
                Logger.LogInformation("There are no pending migrations to execute.");
            }
        }
        private void Can_script_trailing_automatic_migration(bool whenDatabaseExists)
        {
            ResetDatabase();

            var migrator1 = CreateMigrator <ShopContext_v1>();
            var version1  = new MigrationScaffolder(migrator1.Configuration).Scaffold("Version1");

            var migrator2 = CreateMigrator <ShopContext_v2>(automaticDataLossEnabled: true, scaffoldedMigrations: version1);

            migrator2.Update();

            var scriptingDecorator = new MigratorScriptingDecorator(migrator2);

            if (!whenDatabaseExists)
            {
                ResetDatabase();
            }

            // Act
            var script = scriptingDecorator.ScriptUpdate(version1.MigrationId, null);

            // Assert
            Assert.False(script.Contains(CreateMetadataStatement));
            Assert.False(script.Contains("Version1"));
            Assert.True(script.Contains("AutomaticMigration"));
        }
Example #13
0
        /// <summary>
        /// Automatic Migration at runtime
        /// </summary>
        public static void ApplyDatabaseMigrations()
        {
            //Configuration is the class created by Enable-Migrations
            DbMigrationsConfiguration dbMgConfig = new Configuration()
            {
                ContextType = typeof(DBContext)
            };

            using (var databaseContext = new DBContext())
            {
                try
                {
                    var database = databaseContext.Database;
                    var migrationConfiguration = dbMgConfig;
                    migrationConfiguration.TargetDatabase =
                        new DbConnectionInfo(database.Connection.ConnectionString,
                                             "System.Data.SqlClient");
                    var migrator = new DbMigrator(migrationConfiguration);
                    migrator.Update();
                }
                catch (AutomaticDataLossException adle)
                {
                    dbMgConfig.AutomaticMigrationDataLossAllowed = true;
                    var    mg       = new DbMigrator(dbMgConfig);
                    var    scriptor = new MigratorScriptingDecorator(mg);
                    string script   = scriptor.ScriptUpdate(null, null);
                    throw new Exception(adle.Message + " : " + script);
                }
            }
        }
        private void Can_script_using_migration_names(bool whenDatabaseExists)
        {
            ResetDatabase();

            var migrator = CreateMigrator <ShopContext_v1>();
            var version1 = new MigrationScaffolder(migrator.Configuration).Scaffold("Banana");

            CreateMigrator <ShopContext_v1>(scaffoldedMigrations: version1).Update();

            migrator = CreateMigrator <ShopContext_v2>(scaffoldedMigrations: version1);
            var version2 = new MigrationScaffolder(migrator.Configuration).Scaffold("Apple");

            migrator = CreateMigrator <ShopContext_v2>(scaffoldedMigrations: new[] { version1, version2 });
            migrator.Update();

            if (!whenDatabaseExists)
            {
                ResetDatabase();
            }

            var scriptingDecorator
                = new MigratorScriptingDecorator(
                      CreateMigrator <ShopContext_v2>(scaffoldedMigrations: new[] { version1, version2 }));

            var script = scriptingDecorator.ScriptUpdate("Banana", "Apple");

            Assert.False(script.Contains(CreateMetadataStatement));
            Assert.False(script.Contains("Banana"));
            Assert.True(script.Contains("Apple"));
            Assert.False(script.Contains("AutomaticMigration"));
        }
        /// <summary>
        /// Creates SQL script from migration.
        /// The script is usually used in production database because you will not be executing migrations with visual studio in your production database.
        /// </summary>
        /// <returns></returns>
        public static string CreateScriptFromMigration()
        {
            var migrationConfig = new StudentInfoMigrationsConfiguration();
            var migrator        = new DbMigrator(migrationConfig);
            var scriptor        = new MigratorScriptingDecorator(migrator);

            return(scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null));
        }
Example #16
0
        static void Main(string[] args)
        {
            var scriptor = new MigratorScriptingDecorator(new DbMigrator(new Configuration()));
            var script   = scriptor.ScriptUpdate(null, null);

            Console.WriteLine(script);
            Console.ReadLine();
        }
Example #17
0
		public void ScriptMigration(string from, string to, string output)
		{
			var config = FindDbMigrationsConfiguration();
			var migrator = new DbMigrator(config);
			var scriptingDecorator = new MigratorScriptingDecorator(migrator);
			var script = scriptingDecorator.ScriptUpdate(from ?? "0", to);
			File.WriteAllText(output, script);
			Console.WriteLine($"Scripted migration as SQL to file '{output}'.");
		}
Example #18
0
        private void TestSqlGeneration <T>(DbMigrationsConfiguration <T> configuration) where T : DbContext
        {
            var migrator          = new DbMigrator(configuration);
            var scriptingMigrator = new MigratorScriptingDecorator(migrator);

            var migrations = migrator.GetLocalMigrations().OrderBy(c => c).ToList();
            // NOTE: go from first to annotateTable
            var str = scriptingMigrator.ScriptUpdate(migrations.First(c => c.Contains("first")), migrations.First(c => c.Contains("annotate")));
        }
Example #19
0
        public void CanScriptMigrationFromBaseData()
        {
            // note: notice that there is a bug in the ef that causes schema name for insert into MigrationsHistory table to be incorrect
            // (bug reported here: https://entityframework.codeplex.com/workitem/1871)
            var    migrator = new MigratorScriptingDecorator(new DbMigrator(new Configuration()));
            string sql      = migrator.ScriptUpdate("201501032315036_Introduce by-directional association", "201501032326177_Rename LookupItem pk");

            Console.Out.WriteLine(sql);
        }
Example #20
0
        /*
         * public static string GetAllMigration()
         * {
         *
         *
         *  var config = new DbMigrationsConfiguration<SampleDBContext> { AutomaticMigrationsEnabled = true };
         *
         *  var migrator = new DbMigrator(config);
         *
         *  //Get code migration//
         *  var scaffolder = new MigrationScaffolder(migrator.Configuration);
         *
         *  ScaffoldedMigration migration = scaffolder.Scaffold("codeMigration");
         *
         *  var migrationFile = System.IO.Path.Combine(rootPath, migration.Directory, migration.MigrationId);
         *
         *  var userCodeFile = migrationFile + ".cs";
         *
         *  File.WriteAllText(userCodeFile, migration.UserCode);
         *
         *  //Get Db script//
         *  var scriptor = new MigratorScriptingDecorator(migrator);
         *
         *  string script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);
         *
         *  var SqlScriptFile = migrationFile + ".sql";
         *
         *  File.WriteAllText(SqlScriptFile, script);
         *
         *  //Get Edmx Document//
         *
         *  var _currenModelProp = migrator.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Single(m => m.Name == "_currentModel");
         *
         *  var _currenModelValueXDOC = (XDocument)_currenModelProp.GetValue(migrator);
         *
         *  var edmxFile = migrationFile + ".xml";
         *
         *
         *  File.WriteAllText(edmxFile, _currenModelValueXDOC.ToString());
         *
         *  return script;
         * }
         */

        static void gettypfromassebmly()
        {
            var assemblyPath = @"C:\Users\rajneesh.kumar\source\repos\EF6-Code-First-Demo-master\EF6CodeFirstDemo\bin\Debug";

            var assemblyName = string.Format(@"{0}\{1}.{2}", assemblyPath, "EF6ClassLibraryCodeFirst", "dll");

            var assembly = Assembly.LoadFrom(assemblyName);

            var type = assembly.GetType("EF6ClassLibraryCodeFirst.SampleDBContext");

            Type genericClass = typeof(DbMigrationsConfiguration <>);

            //MakeGenericType is badly named
            Type constructedClass = genericClass.MakeGenericType(type);

            object created = Activator.CreateInstance(constructedClass);

            ////////////////////////////////////////////////////////////////////
            ///////////////////////////////////////////////////////////////////


            var config = (DbMigrationsConfiguration)created;

            config.AutomaticMigrationsEnabled = true;

            var migrator = new DbMigrator(config);

            //Get code migration//
            var scaffolder = new MigrationScaffolder(migrator.Configuration);

            ScaffoldedMigration migration = scaffolder.Scaffold("codeMigration");

            var migrationFile = System.IO.Path.Combine(rootPath, migration.Directory, migration.MigrationId);

            var userCodeFile = migrationFile + ".cs";

            File.WriteAllText(userCodeFile, migration.UserCode);

            //Get Db script//
            var scriptor = new MigratorScriptingDecorator(migrator);

            string script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);

            var SqlScriptFile = migrationFile + ".sql";

            File.WriteAllText(SqlScriptFile, script);

            //Get Edmx Document//
            var _currenModelProp = migrator.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Single(m => m.Name == "_currentModel");

            var _currenModelValueXDOC = (XDocument)_currenModelProp.GetValue(migrator);

            var edmxFile = migrationFile + ".xml";

            File.WriteAllText(edmxFile, _currenModelValueXDOC.ToString());
        }
            public override void Run()
            {
                var migrator = GetMigrator();

                var script
                    = new MigratorScriptingDecorator(migrator)
                      .ScriptUpdate(SourceMigration, TargetMigration);

                AppDomain.CurrentDomain.SetData("result", script);
            }
        public static MigratorScriptingDecorator CreateDbMigrationScriptingDecorator(string connectionString, string dllPath, string configurationClassName)
        {
            var migrator = CreateDbMigration(connectionString, dllPath, configurationClassName);

            if (migrator != null)
            {
                var scriptor = new MigratorScriptingDecorator(migrator);
                return(scriptor);
            }
            return(null);
        }
    private static void SaveToFile(string SQLScriptPath, DbMigrator dbMigrator)
    {
        if (string.IsNullOrWhiteSpace(SQLScriptPath))
        {
            return;
        }
        var scriptor = new MigratorScriptingDecorator(dbMigrator);
        var script   = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);

        File.WriteAllText(SQLScriptPath, script);
        Console.WriteLine(script);
    }
Example #24
0
        private void Can_script_windows(bool whenDatabaseExists)
        {
            ResetDatabase();

            var migrator1 = CreateMigrator <ShopContext_v1>();
            var version1  = new MigrationScaffolder(migrator1.Configuration).Scaffold("Version1");

            CreateMigrator <ShopContext_v1>(scaffoldedMigrations: version1).Update();

            var migrator2 = CreateMigrator <ShopContext_v2>(scaffoldedMigrations: version1);

            var version2 = new MigrationScaffolder(migrator2.Configuration).Scaffold("Version2");

            CreateMigrator <ShopContext_v2>(scaffoldedMigrations: new[] { version1, version2 }).Update();

            var migrator3 = CreateMigrator <ShopContext_v3>(scaffoldedMigrations: new[] { version1, version2 });
            var version3  = new MigrationScaffolder(migrator3.Configuration).Scaffold("Version3");

            var migrator4          = CreateMigrator <ShopContext_v3>(scaffoldedMigrations: new[] { version1, version2, version3 });
            var scriptingDecorator = new MigratorScriptingDecorator(migrator4);

            if (!whenDatabaseExists)
            {
                ResetDatabase();
            }

            // All
            var script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, null);

            Assert.True(script.Contains(CreateMetadataStatement));
            Assert.True(script.Contains("Version1"));
            Assert.True(script.Contains("Version2"));
            Assert.True(script.Contains("Version3"));
            Assert.False(script.Contains("AutomaticMigration"));

            // 1
            script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, version1.MigrationId);

            Assert.True(script.Contains(CreateMetadataStatement));
            Assert.True(script.Contains("Version1"));
            Assert.False(script.Contains("Version2"));
            Assert.False(script.Contains("Version3"));
            Assert.False(script.Contains("AutomaticMigration"));

            // 1 & 2
            script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, version2.MigrationId);

            Assert.True(script.Contains(CreateMetadataStatement));
            Assert.True(script.Contains("Version1"));
            Assert.True(script.Contains("Version2"));
            Assert.False(script.Contains("Version3"));
            Assert.False(script.Contains("AutomaticMigration"));
        }
Example #25
0
        public static void GenerateSQLScript()
        {
#if DEBUG
            var          migrator  = new DbMigrator(new Configuration());
            var          scriptor  = new MigratorScriptingDecorator(migrator);
            var          migration = migrator.GetLocalMigrations().LastOrDefault();
            var          sql       = scriptor.ScriptUpdate("0", migration);
            string       info      = $"-- ========================================== --\r\n-- Current Migration: {migration}\r\n-- ========================================== --\r\n\r\n";
            const string fileName  = "OpenNos.sql";
            File.WriteAllText(Path.Combine(@"../../../OpenNos.DAL.EF/DB/", fileName), info + sql);
#endif
        }
Example #26
0
 private void btnScript_Click(object sender, EventArgs e)
 {
     using (var db = new EFCodeFirstContext())
     {
         if (!db.Database.CompatibleWithModel(true))
         {
             var migrator = new DbMigrator(new EFCodeFirst.Data.Migrations.Configuration());
             var script   = new MigratorScriptingDecorator(migrator);
             rtbScript.Text = script.ScriptUpdate(sourceMigration: null, targetMigration: null);
         }
     }
 }
Example #27
0
        public static DelegatedMigrator CreateFromMigrationConfig(DbMigrationsConfiguration c, DbConnection cnn)
        {
            var impl          = new DbMigrator(c);
            var scriptingImpl = new MigratorScriptingDecorator(new DbMigrator(c));
            var migrator      = new DelegatedMigrator(impl.GetPendingMigrations, impl.GetDatabaseMigrations, impl.Update,
                                                      scriptingImpl.ScriptUpdate, cnn)
            {
                IsAutoMigrationsEnabled = c.AutomaticMigrationsEnabled,
                ConfigurationTypeName   = c.GetType().FullName
            };

            return(migrator);
        }
Example #28
0
        static void Main(string[] args)
        {
            // You can test the solution by running this console application as well
            // This will print the migration script just as if it were generated by Update-Database -Script
            var configuration = new Configuration();
            var migrator      = new DbMigrator(configuration);

            var    scriptor = new MigratorScriptingDecorator(migrator);
            string script   = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);

            Console.WriteLine(script);
            Console.ReadLine();
        }
Example #29
0
        /// <inheritdoc />
        public override string BuildDatabaseInitializationScript()
        {
            if (this.TransactionContext == null)
            {
                return((string)null);
            }
            IEnumerable <MigrationStatement> migrationStatements = TransactionContextInitializer <TransactionContext> .GenerateMigrationStatements(this.TransactionContext);

            StringBuilder sqlBuilder = new StringBuilder();

            MigratorScriptingDecorator.BuildSqlScript(migrationStatements, sqlBuilder);
            return(sqlBuilder.ToString());
        }
Example #30
0
        /// <inheritdoc/>
        public override string BuildDatabaseInitializationScript()
        {
            if (TransactionContext != null)
            {
                var sqlStatements = TransactionContextInitializer <TransactionContext> .GenerateMigrationStatements(TransactionContext);

                var sqlBuilder = new StringBuilder();
                MigratorScriptingDecorator.BuildSqlScript(sqlStatements, sqlBuilder);

                return(sqlBuilder.ToString());
            }

            return(null);
        }