diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs
index 4bbe498042..cffe19d05f 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs
@@ -21,7 +21,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
"/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs",
"MyCompanyName.MyProjectName.EntityFrameworkCore",
"MyCompanyName.MyProjectName.MongoDb",
- "MyProjectNameEntityFrameworkCoreModule",
+ "MyProjectNameEntityFrameworkCoreDbMigrationsModule",
"MyProjectNameMongoDbModule"
);
@@ -44,7 +44,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
"/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs",
"MyCompanyName.MyProjectName.EntityFrameworkCore",
"MyCompanyName.MyProjectName.MongoDb",
- "MyProjectNameEntityFrameworkCoreModule",
+ "MyProjectNameEntityFrameworkCoreDbMigrationsModule",
"MyProjectNameMongoDbModule"
);
@@ -67,7 +67,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
"/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs",
"MyCompanyName.MyProjectName.EntityFrameworkCore",
"MyCompanyName.MyProjectName.MongoDb",
- "MyProjectNameEntityFrameworkCoreModule",
+ "MyProjectNameEntityFrameworkCoreDbMigrationsModule",
"MyProjectNameMongoDbModule"
);
@@ -76,8 +76,31 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
"/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json"
);
+ //MyCompanyName.MyProjectName.DbMigrator
+
+ ChangeProjectReference(
+ context,
+ "/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj",
+ "EntityFrameworkCore.DbMigrations",
+ "MongoDB"
+ );
+
+ ChangeModuleDependency(
+ context,
+ "/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs",
+ "MyCompanyName.MyProjectName.EntityFrameworkCore",
+ "MyCompanyName.MyProjectName.MongoDb",
+ "MyProjectNameEntityFrameworkCoreDbMigrationsModule",
+ "MyProjectNameMongoDbModule"
+ );
+
+ ChangeConnectionStringToMongoDb(
+ context,
+ "/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json"
+ );
+
//MyCompanyName.MyProjectName.Domain.Tests
-
+
ChangeProjectReference(
context,
"/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj",
@@ -90,7 +113,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
"/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs",
"MyCompanyName.MyProjectName.EntityFrameworkCore",
"MyCompanyName.MyProjectName.MongoDb",
- "MyProjectNameEntityFrameworkCoreTestModule",
+ "MyProjectNameEntityFrameworkCoreDbMigrationsModule",
"MyProjectNameMongoDbTestModule"
);
}
diff --git a/templates/mvc/MyCompanyName.MyProjectName.sln b/templates/mvc/MyCompanyName.MyProjectName.sln
index fed1712169..a0ab11d317 100644
--- a/templates/mvc/MyCompanyName.MyProjectName.sln
+++ b/templates/mvc/MyCompanyName.MyProjectName.sln
@@ -45,7 +45,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.MongoDB.Tests", "test\MyCompanyName.MyProjectName.MongoDB.Tests\MyCompanyName.MyProjectName.MongoDB.Tests.csproj", "{6015D17B-104B-4EC2-A9B7-D8A40C891458}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp", "test\MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp\MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj", "{EF480016-9127-4916-8735-D2466BDBC582}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp", "test\MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp\MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj", "{EF480016-9127-4916-8735-D2466BDBC582}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.DbMigrator", "src\MyCompanyName.MyProjectName.DbMigrator\MyCompanyName.MyProjectName.DbMigrator.csproj", "{AA94D832-1CCC-4715-95A9-A483F23A1A5D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -133,6 +135,10 @@ Global
{EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -158,6 +164,7 @@ Global
{E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE}
{6015D17B-104B-4EC2-A9B7-D8A40C891458} = {04DBDB01-70F4-4E06-B468-8F87850B22BE}
{EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE}
+ {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj
new file mode 100644
index 0000000000..967a3cad7c
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj
@@ -0,0 +1,32 @@
+
+
+
+
+
+ Exe
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+ PreserveNewest
+ Always
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs
new file mode 100644
index 0000000000..463a7b18a6
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs
@@ -0,0 +1,15 @@
+using MyCompanyName.MyProjectName.EntityFrameworkCore;
+using Volo.Abp.Autofac;
+using Volo.Abp.Modularity;
+
+namespace MyCompanyName.MyProjectName.DbMigrator
+{
+ [DependsOn(
+ typeof(AbpAutofacModule),
+ typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule)
+ )]
+ public class MyProjectNameDbMigratorModule : AbpModule
+ {
+
+ }
+}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs
new file mode 100644
index 0000000000..1a9175bbee
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs
@@ -0,0 +1,53 @@
+using System.IO;
+using Microsoft.Extensions.DependencyInjection;
+using MyCompanyName.MyProjectName.Data;
+using Serilog;
+using Serilog.Events;
+using Volo.Abp;
+using Volo.Abp.Threading;
+
+namespace MyCompanyName.MyProjectName.DbMigrator
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ ConfigureLogging();
+
+ using (var application = AbpApplicationFactory.Create(options =>
+ {
+ options.UseAutofac();
+ options.Services.AddLogging(c => c.AddSerilog());
+ }))
+ {
+ application.Initialize();
+
+ AsyncHelper.RunSync(
+ () => application
+ .ServiceProvider
+ .GetRequiredService()
+ .MigrateAsync()
+ );
+
+ application.Shutdown();
+ }
+ }
+
+ private static void ConfigureLogging()
+ {
+ Log.Logger = new LoggerConfiguration()
+ .MinimumLevel.Information()
+ .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
+ .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning)
+#if DEBUG
+ .MinimumLevel.Override("MyCompanyName.MyProjectName", LogEventLevel.Debug)
+#else
+ .MinimumLevel.Override("MyCompanyName.MyProjectName", LogEventLevel.Information)
+#endif
+ .Enrich.FromLogContext()
+ .WriteTo.File(Path.Combine(Directory.GetCurrentDirectory(), "Logs/logs.txt"))
+ .WriteTo.Console()
+ .CreateLogger();
+ }
+ }
+}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json
new file mode 100644
index 0000000000..404c4f20d8
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json
@@ -0,0 +1,5 @@
+{
+ "ConnectionStrings": {
+ "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true"
+ }
+}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/DataSeedHelper.cs b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/DataSeedHelper.cs
deleted file mode 100644
index 8c31db364c..0000000000
--- a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/DataSeedHelper.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp;
-using Volo.Abp.Data;
-using Volo.Abp.Threading;
-
-namespace MyCompanyName.MyProjectName.Data
-{
- public static class DataSeedHelper
- {
- public static void Seed(ApplicationInitializationContext context)
- {
- AsyncHelper.RunSync(async () =>
- {
- using (var scope = context.ServiceProvider.CreateScope())
- {
- await scope.ServiceProvider
- .GetRequiredService()
- .SeedAsync();
- }
- });
- }
- }
-}
\ No newline at end of file
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs
new file mode 100644
index 0000000000..34c4cf76aa
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace MyCompanyName.MyProjectName.Data
+{
+ public interface IMyProjectNameDbSchemaMigrator
+ {
+ Task MigrateAsync();
+ }
+}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs
new file mode 100644
index 0000000000..f6fd008e66
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs
@@ -0,0 +1,39 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
+using Volo.Abp.Data;
+using Volo.Abp.DependencyInjection;
+
+namespace MyCompanyName.MyProjectName.Data
+{
+ public class MyProjectNameDbMigrationService : ITransientDependency
+ {
+ public ILogger Logger { get; set; }
+
+ private readonly IDataSeeder _dataSeeder;
+ private readonly IMyProjectNameDbSchemaMigrator _dbSchemaMigrator;
+
+ public MyProjectNameDbMigrationService(
+ IDataSeeder dataSeeder,
+ IMyProjectNameDbSchemaMigrator dbSchemaMigrator)
+ {
+ _dataSeeder = dataSeeder;
+ _dbSchemaMigrator = dbSchemaMigrator;
+
+ Logger = NullLogger.Instance;
+ }
+
+ public async Task MigrateAsync()
+ {
+ Logger.LogInformation("Started database migrations...");
+
+ Logger.LogInformation("Migrating database schema...");
+ await _dbSchemaMigrator.MigrateAsync();
+
+ Logger.LogInformation("Executing database seed...");
+ await _dataSeeder.SeedAsync();
+
+ Logger.LogInformation("Successfully completed database migrations.");
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs
new file mode 100644
index 0000000000..417be59326
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs
@@ -0,0 +1,16 @@
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+
+namespace MyCompanyName.MyProjectName.Data
+{
+ /* This is used if database provider does't define
+ * IMyProjectNameDbSchemaMigrator implementation.
+ */
+ public class NullMyProjectNameDbSchemaMigrator : IMyProjectNameDbSchemaMigrator, ITransientDependency
+ {
+ public Task MigrateAsync()
+ {
+ return Task.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs b/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs
new file mode 100644
index 0000000000..7064697d1a
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using MyCompanyName.MyProjectName.Data;
+using Volo.Abp.DependencyInjection;
+
+namespace MyCompanyName.MyProjectName.EntityFrameworkCore
+{
+ [Dependency(ReplaceServices = true)]
+ public class EntityFrameworkCoreMyProjectNameDbSchemaMigrator
+ : IMyProjectNameDbSchemaMigrator, ITransientDependency
+ {
+ private readonly MyProjectNameMigrationsDbContext _dbContext;
+
+ public EntityFrameworkCoreMyProjectNameDbSchemaMigrator(MyProjectNameMigrationsDbContext dbContext)
+ {
+ _dbContext = dbContext;
+ }
+
+ public async Task MigrateAsync()
+ {
+ await _dbContext.Database.MigrateAsync();
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs b/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs
new file mode 100644
index 0000000000..ed9d6dfb08
--- /dev/null
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs
@@ -0,0 +1,16 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace MyCompanyName.MyProjectName.EntityFrameworkCore
+{
+ [DependsOn(
+ typeof(MyProjectNameEntityFrameworkCoreModule)
+ )]
+ public class MyProjectNameEntityFrameworkCoreDbMigrationsModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAbpDbContext();
+ }
+ }
+}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs
index f8a9f8dd1e..8f883bead9 100644
--- a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs
@@ -23,7 +23,7 @@ namespace MyCompanyName.MyProjectName
typeof(AbpAutofacModule),
typeof(AbpAspNetCoreMultiTenancyModule),
typeof(MyProjectNameApplicationModule),
- typeof(MyProjectNameEntityFrameworkCoreModule)
+ typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule)
)]
public class MyProjectNameHttpApiHostModule : AbpModule
{
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs
index 6f9efea814..a583958070 100644
--- a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs
@@ -4,7 +4,6 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
-using MyCompanyName.MyProjectName.Data;
using MyCompanyName.MyProjectName.EntityFrameworkCore;
using MyCompanyName.MyProjectName.Localization;
using MyCompanyName.MyProjectName.MultiTenancy;
@@ -30,7 +29,7 @@ namespace MyCompanyName.MyProjectName
typeof(AbpAutofacModule),
typeof(AbpAccountWebIdentityServerModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule),
- typeof(MyProjectNameEntityFrameworkCoreModule)
+ typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule)
)]
public class MyProjectNameIdentityServerModule : AbpModule
{
@@ -116,11 +115,6 @@ namespace MyCompanyName.MyProjectName
app.UseAbpRequestLocalization();
app.UseAuditing();
app.UseMvcWithDefaultRouteAndArea();
-
- /* Seeding in the application startup can be a problem in a clustered environment.
- * See https://github.com/abpframework/abp/issues/1123
- */
- DataSeedHelper.Seed(context);
}
}
}
diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
index 8e997b7127..2e737fca23 100644
--- a/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
+++ b/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
@@ -7,7 +7,6 @@ using MyCompanyName.MyProjectName.Menus;
using Swashbuckle.AspNetCore.Swagger;
using System.IO;
using Microsoft.Extensions.Configuration;
-using MyCompanyName.MyProjectName.Data;
using MyCompanyName.MyProjectName.Localization;
using MyCompanyName.MyProjectName.MultiTenancy;
using Volo.Abp;
@@ -35,7 +34,7 @@ namespace MyCompanyName.MyProjectName
[DependsOn(
typeof(MyProjectNameHttpApiModule),
typeof(MyProjectNameApplicationModule),
- typeof(MyProjectNameEntityFrameworkCoreModule),
+ typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule),
typeof(AbpAutofacModule),
typeof(AbpIdentityWebModule),
typeof(AbpAccountWebIdentityServerModule),
@@ -204,11 +203,6 @@ namespace MyCompanyName.MyProjectName
});
app.UseAuditing();
app.UseMvcWithDefaultRouteAndArea();
-
- /* Seeding in the application startup can be a problem in a clustered environment.
- * See https://github.com/abpframework/abp/issues/1123
- */
- DataSeedHelper.Seed(context);
}
}
}
diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs b/templates/mvc/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
index 86a7d55706..c3c74ec4bf 100644
--- a/templates/mvc/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
+++ b/templates/mvc/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
@@ -10,7 +10,7 @@ using Volo.Abp.Modularity;
namespace MyCompanyName.MyProjectName.EntityFrameworkCore
{
[DependsOn(
- typeof(MyProjectNameEntityFrameworkCoreModule),
+ typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule),
typeof(MyProjectNameTestBaseModule)
)]
public class MyProjectNameEntityFrameworkCoreTestModule : AbpModule
diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs b/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs
index 0c2d22c0e0..6304627e31 100644
--- a/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs
+++ b/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs
@@ -1,10 +1,11 @@
using Microsoft.Extensions.DependencyInjection;
-using MyCompanyName.MyProjectName.Data;
using Volo.Abp;
using Volo.Abp.Authorization;
using Volo.Abp.Autofac;
using Volo.Abp.BackgroundJobs;
+using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Threading;
namespace MyCompanyName.MyProjectName
{
@@ -33,7 +34,15 @@ namespace MyCompanyName.MyProjectName
private static void SeedTestData(ApplicationInitializationContext context)
{
- DataSeedHelper.Seed(context);
+ AsyncHelper.RunSync(async () =>
+ {
+ using (var scope = context.ServiceProvider.CreateScope())
+ {
+ await scope.ServiceProvider
+ .GetRequiredService()
+ .SeedAsync();
+ }
+ });
}
}
}