protected override void OverrideConfiguration(DbMigrationsConfiguration configuration)
            {
                base.OverrideConfiguration(configuration);

                if (Force)
                {
                    configuration.AutomaticMigrationDataLossAllowed = true;
                }
            }
            protected override void OverrideConfiguration(DbMigrationsConfiguration configuration)
            {
                base.OverrideConfiguration(configuration);

                // If the user hasn't set their own generator and he/she is using a VB project then switch in the default VB one
                if (Language == "vb"
                    && configuration.CodeGenerator is CSharpMigrationCodeGenerator)
                {
                    configuration.CodeGenerator = new VisualBasicMigrationCodeGenerator();
                }
            }
        /// <summary>
        ///     Initializes a new instance of the MigrationScaffolder class.
        /// </summary>
        /// <param name = "migrationsConfiguration">Configuration to be used for scaffolding.</param>
        public MigrationScaffolder(DbMigrationsConfiguration migrationsConfiguration)
        {
            Contract.Requires(migrationsConfiguration != null);

            _migrator = new DbMigrator(migrationsConfiguration);
        }
 protected virtual void OverrideConfiguration(DbMigrationsConfiguration configuration)
 {
     if (ConnectionStringInfo != null)
     {
         configuration.TargetDatabase = ConnectionStringInfo;
     }
 }
 /// <summary>
 /// Initializes a new instance of the MigrateDatabaseToLatestVersion class.
 /// </summary>
 public MigrateDatabaseToLatestVersion()
 {
     _config = new TMigrationsConfiguration();
 }
        /// <summary>
        /// Initializes a new instance of the MigrationScaffolder class.
        /// </summary>
        /// <param name="migrationsConfiguration"> Configuration to be used for scaffolding. </param>
        public MigrationScaffolder(DbMigrationsConfiguration migrationsConfiguration)
        {
            Check.NotNull(migrationsConfiguration, "migrationsConfiguration");

            _migrator = new DbMigrator(migrationsConfiguration);
        }
Example #7
0
        /// <summary>
        /// Creates a full type instance for the migration id by using the current migrations namespace
        /// ie: SmartStore.Data.Migrations.34589734533_Initial
        /// </summary>
        /// <param name="migrator">The migrator context</param>
        /// <param name="migrationId">The migration id from the migrations list of the migrator</param>
        /// <returns>The full DbMigration instance</returns>
        public static DbMigration CreateMigrationInstanceByMigrationId(string migrationId, DbMigrationsConfiguration config)
        {
            string migrationTypeName =
                string.Format(_migrationTypeFormat,
                              config.MigrationsNamespace,
                              GetMigrationClassName(migrationId),
                              config.MigrationsAssembly.FullName);

            return(CreateTypeInstance <DbMigration>(migrationTypeName));
        }
Example #8
0
 public CreateAndMigrateDatabaseInitializer()
 {
     _configuration = new TConfiguration();
 }
        public static IEnumerable <SqlResourceInfo> ExecuteSqlScripts <TContext>(this DbMigrationsConfiguration <TContext> config, TContext context, ScriptExecuteRule rule = ScriptExecuteRule.Modified, string packName = null) where TContext : DbContext
        {
            packName = (packName ?? String.Empty).Trim();
            var configType  = config.GetType();
            var startString = configType.Namespace + SqlResourceInfo.scriptFolderName + (string.IsNullOrWhiteSpace(packName) ? "" : packName + ".");

            var migrateCultures = new[] { "Default", GetResourceCultureName() };

            var resources = configType.Assembly.GetManifestResourceNames().Where(s => s.StartsWith(startString, StringComparison.InvariantCultureIgnoreCase) &&
                                                                                 s.EndsWith(".sql", StringComparison.InvariantCultureIgnoreCase)
                                                                                 ).Select(s => new SqlResourceInfo(configType, packName, s))
                            .Where(r => migrateCultures.Contains(r.CultureName, StringComparer.InvariantCultureIgnoreCase));

            using (var historyContext = new SqlScriptsHistoryContext(context.Database.Connection, false)) {
                InitializeDatabase(historyContext);
                historyContext.Database.CommandTimeout = (int)Math.Max(context.Database.CommandTimeout ?? 0, 120);
                var histories = historyContext.SqlScriptsHistory.Where(h => h.ScriptName.StartsWith(startString)).ToDictionary(h => h.ScriptName.ToLower(), h => h.Hash);

                DbContextTransaction packTran = null;
                switch (rule)
                {
                case ScriptExecuteRule.Modified:
                    resources = resources.Where(r => {
                        string hashVal;
                        return(!histories.TryGetValue(r.Path.ToLower(), out hashVal) || !hashVal.Equals(r.Hash, StringComparison.InvariantCultureIgnoreCase));
                    });
                    break;

                case ScriptExecuteRule.ModifiedPack:
                    if (!resources.Any(r => {
                        string hashVal;
                        return(!histories.TryGetValue(r.Path.ToLower(), out hashVal) || !hashVal.Equals(r.Hash, StringComparison.InvariantCultureIgnoreCase));
                    }))
                    {
                        resources = new SqlResourceInfo[] { };
                    }
                    else
                    {
                        packTran = historyContext.Database.BeginTransaction();
                    }
                    break;

                case ScriptExecuteRule.Once:
                    resources = resources.Where(r => !histories.ContainsKey(r.Path.ToLower()));
                    break;
                    //default: // do nothing on ScriptExecuteRule.Always
                }

                resources = resources
                            .OrderBy(r => r.CultureName == "Default" ? 0 : 1)
                            .ThenBy(r => r.FolderName + "z")
                            .ThenBy(r => r.Path).ToArray();
                try {
                    foreach (var resourceInfo in resources.ToArray())
                    {
                        resourceInfo.ExecuteSqlScript(historyContext, packTran);
                    }
                    if (packTran != null)
                    {
                        packTran.Commit();
                    }
                } finally {
                    if (packTran != null)
                    {
                        packTran.Dispose();
                    }
                }
                return(resources);
            }
        }
 public static IEnumerable <SqlResourceInfo> ExecuteSqlScripts <TContext>(this DbMigrationsConfiguration <TContext> config, TContext context, string packName) where TContext : DbContext
 {
     return(ExecuteSqlScripts(config, context, ScriptExecuteRule.ModifiedPack, packName));
 }
Example #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UpdateMigrationsInitializer{TContext}" /> class.
 /// </summary>
 /// <param name="config">The config.</param>
 /// <param name="sqlVerify">The SQL verify.</param>
 public UpdateMigrationsInitializer(DbMigrationsConfiguration <TContext> config, ISqlVerify sqlVerify)
 {
     this._config    = config;
     this._sqlVerify = sqlVerify;
 }
Example #12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UpdateMigrationsInitializer{TContext}"/> class.
 /// </summary>
 /// <param name="config">
 /// The config.
 /// </param>
 public UpdateMigrationsInitializer(DbMigrationsConfiguration <TContext> config)
 {
     this._config = config;
 }
 public DataContextInitialisationAndMigration()
 {
     _configuration = new TConfiguration();
 }