public override void Up() { AlterColumn("dbo.Salaries", "HouseRent", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "MoharghoAlloowance"); AlterColumn("dbo.Salaries", "MoharghoAlloowance", c => c.String()); AlterColumn("dbo.Salaries", "MedicalAllowance", c => c.String()); AlterColumn("dbo.Salaries", "TelephoneAllowance", c => c.String()); AlterColumn("dbo.Salaries", "CurriculumAssitanceAllowance", c => c.String()); AlterColumn("dbo.Salaries", "AssistantProctorAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "DeanAllowance"); AlterColumn("dbo.Salaries", "DeanAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "ChairmanAllowance"); AlterColumn("dbo.Salaries", "ChairmanAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "ProvostAllowance"); AlterColumn("dbo.Salaries", "ProvostAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "AssistantProvostAllowance"); AlterColumn("dbo.Salaries", "AssistantProvostAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "WardenDirectorAllowance"); AlterColumn("dbo.Salaries", "WardenDirectorAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "StudentAdvisorAllowance"); AlterColumn("dbo.Salaries", "StudentAdvisorAllowance", c => c.String()); AlterColumn("dbo.Salaries", "ResearchAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "BookAllowance"); AlterColumn("dbo.Salaries", "BookAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "AdditionalDutiesAllowance"); AlterColumn("dbo.Salaries", "AdditionalDutiesAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "PresonAllowance"); AlterColumn("dbo.Salaries", "PresonAllowance", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "OthersAddition"); AlterColumn("dbo.Salaries", "OthersAddition", c => c.String()); AlterColumn("dbo.Salaries", "Somonnoy", c => c.String()); AlterColumn("dbo.Salaries", "Total", c => c.String()); AlterColumn("dbo.Salaries", "GPF", c => c.String()); AlterColumn("dbo.Salaries", "BF", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "FutureFund"); AlterColumn("dbo.Salaries", "FutureFund", c => c.String()); AlterColumn("dbo.Salaries", "TransportationAllowance", c => c.String()); AlterColumn("dbo.Salaries", "IncomeTax", c => c.String()); AlterColumn("dbo.Salaries", "RevenueStamp", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "DevelopmentFund"); AlterColumn("dbo.Salaries", "DevelopmentFund", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "StudentDevelopmentFund"); AlterColumn("dbo.Salaries", "StudentDevelopmentFund", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "TeacherFamilyDevelopment"); AlterColumn("dbo.Salaries", "TeacherFamilyDevelopment", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "Club"); AlterColumn("dbo.Salaries", "Club", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "HouseRentSub"); AlterColumn("dbo.Salaries", "HouseRentSub", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "GasBill"); AlterColumn("dbo.Salaries", "GasBill", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "InternetBill"); AlterColumn("dbo.Salaries", "InternetBill", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "GroupInsurance"); AlterColumn("dbo.Salaries", "GroupInsurance", c => c.String()); AlterColumn("dbo.Salaries", "TotalSubtraction", c => c.String()); AlterColumn("dbo.Salaries", "NeatSalary", c => c.String()); MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "FestivalAllowance"); AlterColumn("dbo.Salaries", "FestivalAllowance", c => c.String()); }
protected override void Up(MigrationBuilder migrationBuilder) { string scriptContent = MigrationExtensions.GetScriptContent("SeedData1.sql", MigrationExtensions.MigrationScriptType.DataUpdate); migrationBuilder.Sql(scriptContent); scriptContent = MigrationExtensions.GetScriptContent("SeedData2.sql", MigrationExtensions.MigrationScriptType.DataUpdate); migrationBuilder.Sql(scriptContent); scriptContent = MigrationExtensions.GetScriptContent("SeedData3.sql", MigrationExtensions.MigrationScriptType.DataUpdate); migrationBuilder.Sql(scriptContent); scriptContent = MigrationExtensions.GetScriptContent("SeedData4.sql", MigrationExtensions.MigrationScriptType.DataUpdate); migrationBuilder.Sql(scriptContent); scriptContent = MigrationExtensions.GetScriptContent("SeedData5.sql", MigrationExtensions.MigrationScriptType.DataUpdate); migrationBuilder.Sql(scriptContent); }
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { MigrationExtensions.UpdateDatabase(app); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseHttpsRedirection(); app.UseCors(options => options.WithOrigins("http://localhost:4200") .AllowAnyMethod() .AllowAnyHeader()); app.UseMvc(); app.UseSwaggerDocumentation(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { MigrationExtensions.UpdateDatabase(app); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); app.UseSwaggerDocumentation(); }
/// <summary> /// Shows the status of the database migrations /// </summary> /// <returns>A csv indicating the database status</returns> public string Execute() { var fileInfo = new FileInfo(_projectFile); // check changelog for the latest migration run var changeLogCollection = new ChangelogCollection(_mongoDbContext); var changeLog = changeLogCollection.All(); var latestChange = changeLog.GetLatestChange(); // get all classes in a namespace from project assembly var workingDirectory = fileInfo.Directory.FullName; // create build command for project where migrations are created var runner = CLI.DotNet(x => x.WorkingDirectory = workingDirectory) .Build(x => x.BuildConfiguration = BuildConfiguration.Debug) .Create(); // run command var results = runner.Run(); if (!results.IsSuccessful) { return($"Error: {fileInfo.Name} failed to build with the following errors: {results.Message}"); } var migrations = MigrationExtensions.GetMigrationTypes(fileInfo); if (migrations.Count == 0) { return("Error: No migration files found in project"); } var remainingMigrations = migrations.GetRange(0, migrations.Count); // grab the latest changes if any migrations were previously executed if (latestChange != null) { remainingMigrations = migrations.GetRemainingMigrations(latestChange.FileName); } var migrationStatus = new StringBuilder(); // add headers to migration status migrationStatus.AppendLine("Migration,Applied At"); // loop through executed migrations by data applied foreach (var change in changeLog.OrderBy(x => x.AppliedAt)) { migrationStatus.AppendLine($"{change.FileName},{change.AppliedAt.ToString("MM/dd/yyyy h:mm tt")}"); } // return status if there are no remaining migrations if (remainingMigrations == null) { return(migrationStatus.ToString()); } // loop through all pending migrations foreach (var migration in remainingMigrations) { migrationStatus.AppendLine($"{migration.Name},PENDING"); } return(migrationStatus.ToString()); }
/// <summary> /// Executes the migration's down function to downgrade the database /// based on it's current changelog /// </summary> /// <returns></returns> public string Execute() { var fileInfo = new FileInfo(_projectFile); var isMigrated = false; string logPath = string.Empty; // check changelog for the latest migration run var changeLogCollection = new ChangelogCollection(_mongoDbContext); var changeLog = changeLogCollection.All(); var latestChange = changeLog.GetLatestChange(); if (latestChange == null) { return("No changes to downgrade"); } // get all classes in a namespace from project assembly var workingDirectory = fileInfo.Directory.FullName; // create build command for project where migrations are created var runner = CLI.DotNet(x => x.WorkingDirectory = workingDirectory) .Build(x => x.BuildConfiguration = BuildConfiguration.Debug) .Create(); // run cli command var results = runner.Run(); if (!results.IsSuccessful) { return($"Error: {fileInfo.Name} failed to build with the following errors: {results.Message}"); } var migration = MigrationExtensions.GetMigration(latestChange.FileName, fileInfo); if (migration == null) { return($"Error: Unable to locate migration {latestChange.FileName}"); } try { var instance = Activator.CreateInstance(migration); isMigrated = (bool)migration.GetMethod("Down") .Invoke(instance, new[] { _mongoDbContext.Db }); } catch (Exception e) { logPath = _logger.Log(migration.Name, e.ToString()); } if (!isMigrated) { return($"Error: {migration.Name} was not migrated successfully. See {logPath} for more details."); } var deleteResult = changeLogCollection.Delete(latestChange); if (deleteResult == 0) { return($"Error: {migration.Name} was not downgraded"); } return($"Downgraded: {migration.Name}"); }
/// <summary> /// Executes the migration's up function to upgrade the database /// based on it's current changelog /// </summary> /// <returns></returns> public string Execute() { var fileInfo = new FileInfo(_projectFile); // check changelog for the latest migration run var changeLogCollection = new ChangelogCollection(_mongoDbContext); var changeLog = changeLogCollection.All(); var latestChange = changeLog.GetLatestChange(); // get all classes in a namespace from project assembly var workingDirectory = fileInfo.Directory.FullName; // create build command for project where migrations are created var runner = CLI.DotNet(x => x.WorkingDirectory = workingDirectory) .Build(x => x.BuildConfiguration = BuildConfiguration.Debug) .Create(); // run command var results = runner.Run(); if (!results.IsSuccessful) { return($"Error: {fileInfo.Name} failed to build with the following errors: {results.Message}"); } var migrations = MigrationExtensions.GetMigrationTypes(fileInfo); if (migrations.Count == 0) { return("Error: No migration files found in project"); } var remainingMigrations = migrations.GetRange(0, migrations.Count); // grab the latest changes if any migrations were previously executed if (latestChange != null) { remainingMigrations = migrations.GetRemainingMigrations(latestChange.FileName); } if (remainingMigrations.Count == 0) { return("The database is already up to date"); } // string build result for multiple migrations var migrationResult = new StringBuilder(); foreach (var migration in remainingMigrations) { var isMigrated = false; string logPath = string.Empty; try { var instance = Activator.CreateInstance(migration); isMigrated = (bool)migration.GetMethod("Up") .Invoke(instance, new[] { _mongoDbContext.Db }); } catch (Exception e) { logPath = _logger.Log(migration.Name, e.ToString()); } if (!isMigrated) { return($"Error: {migration.Name} was not migrated successfully. See {logPath} for more details."); } changeLogCollection.Insert(new Changelog { AppliedAt = DateTime.Now, FileName = migration.Name }); migrationResult.AppendLine($"Migrated: {migration.Name}"); } if (migrationResult.Length > 0) { return(migrationResult.ToString()); } return("Error: Unable to location migrations to be executed. Verify that a Migrations directory exists in your project"); }