From 22f1f73bb18d583e4a74f31824c27d04961c2e54 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Mon, 8 Apr 2019 22:04:00 +0300 Subject: [PATCH] Added Migrator --- modules/docs/Volo.Docs.sln | 7 +++ .../VoloDocsDbContextFactory.cs | 2 +- .../app/VoloDocs.Migrator/AppExtensions.cs | 13 +++++ modules/docs/app/VoloDocs.Migrator/Program.cs | 54 +++++++++++++++++++ .../VoloDocs.Migrator.csproj | 26 +++++++++ .../VoloDocsMigratorModule.cs | 29 ++++++++++ .../app/VoloDocs.Migrator/appsettings.json | 3 ++ modules/docs/app/VoloDocs/VoloDocsModule.cs | 9 ---- 8 files changed, 133 insertions(+), 10 deletions(-) create mode 100644 modules/docs/app/VoloDocs.Migrator/AppExtensions.cs create mode 100644 modules/docs/app/VoloDocs.Migrator/Program.cs create mode 100644 modules/docs/app/VoloDocs.Migrator/VoloDocs.Migrator.csproj create mode 100644 modules/docs/app/VoloDocs.Migrator/VoloDocsMigratorModule.cs create mode 100644 modules/docs/app/VoloDocs.Migrator/appsettings.json diff --git a/modules/docs/Volo.Docs.sln b/modules/docs/Volo.Docs.sln index 80148e311e..030682aa66 100644 --- a/modules/docs/Volo.Docs.sln +++ b/modules/docs/Volo.Docs.sln @@ -43,6 +43,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VoloDocs.EntityFrameworkCor EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VoloDocs", "app\VoloDocs\VoloDocs.csproj", "{057EA924-4524-4452-840C-5E3D509F2ED3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VoloDocs.Migrator", "app\VoloDocs.Migrator\VoloDocs.Migrator.csproj", "{8A5E5001-C017-44A8-ADDA-DC66C102556E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -109,6 +111,10 @@ Global {057EA924-4524-4452-840C-5E3D509F2ED3}.Debug|Any CPU.Build.0 = Debug|Any CPU {057EA924-4524-4452-840C-5E3D509F2ED3}.Release|Any CPU.ActiveCfg = Release|Any CPU {057EA924-4524-4452-840C-5E3D509F2ED3}.Release|Any CPU.Build.0 = Release|Any CPU + {8A5E5001-C017-44A8-ADDA-DC66C102556E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A5E5001-C017-44A8-ADDA-DC66C102556E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A5E5001-C017-44A8-ADDA-DC66C102556E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A5E5001-C017-44A8-ADDA-DC66C102556E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -132,6 +138,7 @@ Global {116A6145-9D66-4867-B3EF-A464FAC47946} = {BCA19441-17E9-43E6-AED1-15344D18F967} {1B459653-8DAC-41CD-A08E-28D6E74265D3} = {555508AD-F593-43E3-9354-9FA51512F181} {057EA924-4524-4452-840C-5E3D509F2ED3} = {555508AD-F593-43E3-9354-9FA51512F181} + {8A5E5001-C017-44A8-ADDA-DC66C102556E} = {555508AD-F593-43E3-9354-9FA51512F181} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {13691265-2547-4FFF-B757-E8FACB05679D} diff --git a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs index ad376401a6..4daa15555b 100644 --- a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs +++ b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs @@ -12,7 +12,7 @@ namespace VoloDocs.EntityFrameworkCore var configuration = BuildConfiguration(); var builder = new DbContextOptionsBuilder() - .UseSqlServer(configuration.GetConnectionString("SqlServer")); + .UseSqlServer(configuration["ConnectionString"]); return new VoloDocsDbContext(builder.Options); } diff --git a/modules/docs/app/VoloDocs.Migrator/AppExtensions.cs b/modules/docs/app/VoloDocs.Migrator/AppExtensions.cs new file mode 100644 index 0000000000..1e99538582 --- /dev/null +++ b/modules/docs/app/VoloDocs.Migrator/AppExtensions.cs @@ -0,0 +1,13 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; + +namespace VoloDocs.Migrator +{ + public static class AppExtensions + { + public static T Resolve(this IAbpApplicationWithInternalServiceProvider app) + { + return (T)app.ServiceProvider.GetRequiredService(); + } + } +} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Migrator/Program.cs b/modules/docs/app/VoloDocs.Migrator/Program.cs new file mode 100644 index 0000000000..a3bbf49cd8 --- /dev/null +++ b/modules/docs/app/VoloDocs.Migrator/Program.cs @@ -0,0 +1,54 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Volo.Abp; +using VoloDocs.EntityFrameworkCore; + +namespace VoloDocs.Migrator +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Initializing VoloDocs Migrator ... "); + + using (var app = AbpApplicationFactory.Create()) + { + app.Initialize(); + + using (var dbContext = app.Resolve()) + { + var connectionString = dbContext.Database.GetDbConnection().ConnectionString; + + Console.Clear(); + + Console.Write("\nThis program updates an existing database or creates a new one if not exists.\n" + + "The following connection string will be used:\n\n" + + new string('=', 70) + "\n" + + connectionString + "\n" + + new string('=', 70) + "\n\n" + + "Do you confirm to run the migration? (y/n) "); + + if (Console.ReadKey().Key == ConsoleKey.Y) + { + try + { + Console.WriteLine("\nMigrating..."); + + dbContext.Database.Migrate(); + + Console.WriteLine("\nCompleted."); + } + catch (Exception ex) + { + Console.Write("\nAn error occured while migrating the database:\n"); + Console.Write(ex.ToString()); + } + } + } + + Console.WriteLine("Press ENTER to exit..."); + Console.ReadLine(); + } + } + } +} diff --git a/modules/docs/app/VoloDocs.Migrator/VoloDocs.Migrator.csproj b/modules/docs/app/VoloDocs.Migrator/VoloDocs.Migrator.csproj new file mode 100644 index 0000000000..45c7304658 --- /dev/null +++ b/modules/docs/app/VoloDocs.Migrator/VoloDocs.Migrator.csproj @@ -0,0 +1,26 @@ + + + + Exe + netcoreapp2.2 + + + + + + + + + PreserveNewest + PreserveNewest + + + + + + + + + + + diff --git a/modules/docs/app/VoloDocs.Migrator/VoloDocsMigratorModule.cs b/modules/docs/app/VoloDocs.Migrator/VoloDocsMigratorModule.cs new file mode 100644 index 0000000000..07aece7a5e --- /dev/null +++ b/modules/docs/app/VoloDocs.Migrator/VoloDocsMigratorModule.cs @@ -0,0 +1,29 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Modularity; +using VoloDocs.EntityFrameworkCore; + +namespace VoloDocs.Migrator +{ + [DependsOn(typeof(VoloDocsEntityFrameworkCoreModule))] + public class VoloDocsMigratorModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + + context.Services.AddAbpDbContext(); + + Configure(options => + { + options.ConnectionStrings.Default = configuration["ConnectionString"]; + }); + + Configure(options => + { + options.UseSqlServer(); + }); + } + } +} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Migrator/appsettings.json b/modules/docs/app/VoloDocs.Migrator/appsettings.json new file mode 100644 index 0000000000..aeaea6d720 --- /dev/null +++ b/modules/docs/app/VoloDocs.Migrator/appsettings.json @@ -0,0 +1,3 @@ +{ + "ConnectionString": "Server=localhost;Database=VoloDocsNew;Trusted_Connection=True;MultipleActiveResultSets=true" +} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs/VoloDocsModule.cs b/modules/docs/app/VoloDocs/VoloDocsModule.cs index 87873396df..3a25b9c740 100644 --- a/modules/docs/app/VoloDocs/VoloDocsModule.cs +++ b/modules/docs/app/VoloDocs/VoloDocsModule.cs @@ -14,7 +14,6 @@ using Volo.Abp.AspNetCore.Mvc.UI; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; -using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components; using Volo.Abp.AspNetCore.Mvc.UI.Theming; using Volo.Abp.Autofac; using Volo.Abp.Data; @@ -55,12 +54,6 @@ namespace VoloDocs { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - - //Configure(options => - //{ - // options.ConnectionString = configuration["ConnectionString"]; - // options.Title = configuration["Title"]; - //}); Configure(options => { @@ -112,8 +105,6 @@ namespace VoloDocs { options.Conventions.AddPageRoute("/Error", "error/{statusCode}"); }); - - } public override void OnApplicationInitialization(ApplicationInitializationContext context)