Browse Source

Merge pull request #5049 from abpframework/issue/4863

Automatically run the DbMigrator application on the add-module command
pull/5089/head
Halil İbrahim Kalkan 6 years ago
committed by GitHub
parent
commit
c6b40a9691
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationAdder.cs
  2. 31
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs

14
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationAdder.cs

@ -7,22 +7,12 @@ namespace Volo.Abp.Cli.ProjectModification
{
public class EfCoreMigrationAdder : ITransientDependency
{
public void AddMigration(string csprojFile, string module, string startupProject, bool updateDatabase = true)
public void AddMigration(string dbMigrationsCsprojFile, string module, string startupProject)
{
var moduleName = ParseModuleName(module);
var migrationName = "Added_" + moduleName + "_Module" + GetUniquePostFix();
CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(csprojFile) + "\" && dotnet ef migrations add " + migrationName + GetStartupProjectOption(startupProject));
if (updateDatabase)
{
UpdateDatabase(csprojFile, startupProject);
}
}
protected void UpdateDatabase(string csprojFile, string startupProject)
{
CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(csprojFile) + "\" && dotnet ef database update" + GetStartupProjectOption(startupProject));
CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigrationsCsprojFile) + "\" && dotnet ef migrations add " + migrationName + GetStartupProjectOption(startupProject));
}
protected virtual string ParseModuleName(string fullModuleName)

31
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs

@ -10,6 +10,7 @@ using System.Threading.Tasks;
using Volo.Abp.Cli.Commands.Services;
using Volo.Abp.Cli.Http;
using Volo.Abp.Cli.ProjectBuilding;
using Volo.Abp.Cli.Utils;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
@ -214,6 +215,11 @@ namespace Volo.Abp.Cli.ProjectModification
{
if (string.IsNullOrWhiteSpace(module.EfCoreConfigureMethodName))
{
if (!skipDbMigrations)
{
RunMigrator(projectFiles);
}
return;
}
@ -227,6 +233,12 @@ namespace Volo.Abp.Cli.ProjectModification
if (dbMigrationsProject == null)
{
Logger.LogDebug("Solution doesn't have a \".DbMigrations\" project.");
if (!skipDbMigrations)
{
RunMigrator(projectFiles);
}
return;
}
@ -240,9 +252,24 @@ namespace Volo.Abp.Cli.ProjectModification
var addedNewBuilder = DbContextFileBuilderConfigureAdder.Add(dbContextFile, module.EfCoreConfigureMethodName);
if (addedNewBuilder && !skipDbMigrations)
if (!skipDbMigrations)
{
if (addedNewBuilder)
{
EfCoreMigrationAdder.AddMigration(dbMigrationsProject, module.Name, startupProject);
}
RunMigrator(projectFiles);
}
}
protected virtual async Task RunMigrator(string[] projectFiles)
{
var dbMigratorProject = projectFiles.FirstOrDefault(p => p.EndsWith(".DbMigrator.csproj"));
if (!string.IsNullOrEmpty(dbMigratorProject))
{
EfCoreMigrationAdder.AddMigration(dbMigrationsProject, module.Name, startupProject);
CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run");
}
}

Loading…
Cancel
Save