diff --git a/templates/module/MyCompanyName.MyModuleName.sln b/templates/module/MyCompanyName.MyModuleName.sln
index 4e09d06264..98f1384346 100644
--- a/templates/module/MyCompanyName.MyModuleName.sln
+++ b/templates/module/MyCompanyName.MyModuleName.sln
@@ -11,6 +11,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.Application", "src\MyCompanyName.MyModuleName.Application\MyCompanyName.MyModuleName.Application.csproj", "{78040F9E-3501-4A40-82DF-00A597710F35}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{649A3FFA-182F-4E56-9717-E6A9A2BEC545}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{E400416D-2895-4512-9D17-90681EEC7E0A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.EntityFrameworkCore", "src\MyCompanyName.MyModuleName.EntityFrameworkCore\MyCompanyName.MyModuleName.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.MongoDB", "src\MyCompanyName.MyModuleName.MongoDB\MyCompanyName.MyModuleName.MongoDB.csproj", "{F1C58097-4C08-4D88-8976-6B3389391481}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -33,10 +43,26 @@ Global
{78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F1C58097-4C08-4D88-8976-6B3389391481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F1C58097-4C08-4D88-8976-6B3389391481}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F1C58097-4C08-4D88-8976-6B3389391481}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F1C58097-4C08-4D88-8976-6B3389391481}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {D64C1577-4929-4B60-939E-96DE1534891A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {78040F9E-3501-4A40-82DF-00A597710F35} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {F1C58097-4C08-4D88-8976-6B3389391481} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
EndGlobalSection
diff --git a/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyModuleName.EntityFrameworkCore.csproj b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyModuleName.EntityFrameworkCore.csproj
new file mode 100644
index 0000000000..90805c4ae7
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyModuleName.EntityFrameworkCore.csproj
@@ -0,0 +1,16 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/IMyModuleNameDbContext.cs b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/IMyModuleNameDbContext.cs
new file mode 100644
index 0000000000..e75522b93a
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/IMyModuleNameDbContext.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace MyCompanyName.MyModuleName.EntityFrameworkCore
+{
+ [ConnectionStringName("MyModuleName")]
+ public interface IMyModuleNameDbContext : IEfCoreDbContext
+ {
+ /* Add DbSet for each Aggregate Root here. Example:
+ * DbSet Questions { get; }
+ */
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContext.cs b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContext.cs
new file mode 100644
index 0000000000..cba4a3898e
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContext.cs
@@ -0,0 +1,35 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace MyCompanyName.MyModuleName.EntityFrameworkCore
+{
+ [ConnectionStringName("MyModuleName")]
+ public class MyModuleNameDbContext : AbpDbContext, IMyModuleNameDbContext
+ {
+ public static string TablePrefix { get; set; } = MyModuleNameConsts.DefaultDbTablePrefix;
+
+ public static string Schema { get; set; } = MyModuleNameConsts.DefaultDbSchema;
+
+ /* Add DbSet for each Aggregate Root here. Example:
+ * public DbSet Questions { get; set; }
+ */
+
+ public MyModuleNameDbContext(DbContextOptions options)
+ : base(options)
+ {
+
+ }
+
+ protected override void OnModelCreating(ModelBuilder builder)
+ {
+ base.OnModelCreating(builder);
+
+ builder.ConfigureMyModuleName(options =>
+ {
+ options.TablePrefix = TablePrefix;
+ options.Schema = Schema;
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs
new file mode 100644
index 0000000000..b82af71475
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs
@@ -0,0 +1,38 @@
+using System;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp;
+
+namespace MyCompanyName.MyModuleName.EntityFrameworkCore
+{
+ public static class MyModuleNameDbContextModelCreatingExtensions
+ {
+ public static void ConfigureMyModuleName(
+ this ModelBuilder builder,
+ Action optionsAction = null)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ var options = new MyModuleNameModelBuilderConfigurationOptions();
+
+ optionsAction?.Invoke(options);
+
+ /* Configure all entities here. Example:
+
+ builder.Entity(b =>
+ {
+ //Configure table & schema name
+ //b.ToTable(options.TablePrefix + "Questions", options.Schema);
+
+ //Properties
+ //b.Property(q => q.Title).IsRequired().HasMaxLength(QuestionConsts.MaxTitleLength);
+
+ //Configure relations
+ //b.HasMany(question => question.Tags).WithOne().HasForeignKey(qt => qt.QuestionId);
+
+ //Configure indexes
+ //b.HasIndex(q => q.CreationTime);
+ });
+ */
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs
new file mode 100644
index 0000000000..c83b39f9d0
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs
@@ -0,0 +1,25 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace MyCompanyName.MyModuleName.EntityFrameworkCore
+{
+ [DependsOn(
+ typeof(MyModuleNameDomainModule),
+ typeof(AbpEntityFrameworkCoreModule)
+ )]
+ public class MyModuleNameEntityFrameworkCoreModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAbpDbContext(options =>
+ {
+ /* Add custom repositories here. Example:
+ * options.AddRepository();
+ */
+ });
+
+ context.Services.AddAssemblyOf();
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs
new file mode 100644
index 0000000000..bc876540c6
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs
@@ -0,0 +1,18 @@
+using JetBrains.Annotations;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+
+namespace MyCompanyName.MyModuleName.EntityFrameworkCore
+{
+ public class MyModuleNameModelBuilderConfigurationOptions : ModelBuilderConfigurationOptions
+ {
+ public MyModuleNameModelBuilderConfigurationOptions(
+ [NotNull] string tablePrefix = MyModuleNameConsts.DefaultDbTablePrefix,
+ [CanBeNull] string schema = MyModuleNameConsts.DefaultDbSchema)
+ : base(
+ tablePrefix,
+ schema)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName.MyModuleName.MongoDB.csproj b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName.MyModuleName.MongoDB.csproj
new file mode 100644
index 0000000000..5fc6e1c6f8
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName.MyModuleName.MongoDB.csproj
@@ -0,0 +1,15 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/AbpUsersMongoDbContextExtensions.cs b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/AbpUsersMongoDbContextExtensions.cs
new file mode 100644
index 0000000000..cf5e23ea89
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/AbpUsersMongoDbContextExtensions.cs
@@ -0,0 +1,20 @@
+using System;
+using Volo.Abp;
+using Volo.Abp.MongoDB;
+
+namespace MyCompanyName.MyModuleName.MongoDB
+{
+ public static class AbpUsersMongoDbContextExtensions
+ {
+ public static void ConfigureMyModuleName(
+ this IMongoModelBuilder builder,
+ Action optionsAction = null)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ var options = new MyModuleNameMongoModelBuilderConfigurationOptions();
+
+ optionsAction?.Invoke(options);
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/IMyModuleNameMongoDbContext.cs b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/IMyModuleNameMongoDbContext.cs
new file mode 100644
index 0000000000..4828e5b5d8
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/IMyModuleNameMongoDbContext.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.Data;
+using Volo.Abp.MongoDB;
+
+namespace MyCompanyName.MyModuleName.MongoDB
+{
+ [ConnectionStringName("MyModuleName")]
+ public interface IMyModuleNameMongoDbContext : IAbpMongoDbContext
+ {
+ /* Define mongo collections here. Example:
+ * IMongoCollection Questions { get; }
+ */
+ }
+}
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameBsonClassMap.cs b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameBsonClassMap.cs
new file mode 100644
index 0000000000..48311273a3
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameBsonClassMap.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Threading;
+
+namespace MyCompanyName.MyModuleName.MongoDB
+{
+ public static class MyModuleNameBsonClassMap
+ {
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
+
+ public static void Configure()
+ {
+ OneTimeRunner.Run(() =>
+ {
+ //Register mappings here. Example:
+ //BsonClassMap.RegisterClassMap(map =>
+ //{
+ // map.AutoMap();
+ //});
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbContext.cs b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbContext.cs
new file mode 100644
index 0000000000..29dd66fd72
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbContext.cs
@@ -0,0 +1,25 @@
+using Volo.Abp.Data;
+using Volo.Abp.MongoDB;
+
+namespace MyCompanyName.MyModuleName.MongoDB
+{
+ [ConnectionStringName("MyModuleName")]
+ public class MyModuleNameMongoDbContext : AbpMongoDbContext, IMyModuleNameMongoDbContext
+ {
+ public static string CollectionPrefix { get; set; } = MyModuleNameConsts.DefaultDbTablePrefix;
+
+ /* Add mongo collections here. Example:
+ * public IMongoCollection Questions => Collection();
+ */
+
+ protected override void CreateModel(IMongoModelBuilder modelBuilder)
+ {
+ base.CreateModel(modelBuilder);
+
+ modelBuilder.ConfigureMyModuleName(options =>
+ {
+ options.CollectionPrefix = CollectionPrefix;
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbModule.cs b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbModule.cs
new file mode 100644
index 0000000000..26b3af3819
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbModule.cs
@@ -0,0 +1,27 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+using Volo.Abp.MongoDB;
+
+namespace MyCompanyName.MyModuleName.MongoDB
+{
+ [DependsOn(
+ typeof(MyModuleNameDomainModule),
+ typeof(AbpMongoDbModule)
+ )]
+ public class MyModuleNameMongoDbModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ MyModuleNameBsonClassMap.Configure();
+
+ context.Services.AddMongoDbContext(options =>
+ {
+ /* Add custom repositories here. Example:
+ * options.AddRepository();
+ */
+ });
+
+ context.Services.AddAssemblyOf();
+ }
+ }
+}
diff --git a/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoModelBuilderConfigurationOptions.cs b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoModelBuilderConfigurationOptions.cs
new file mode 100644
index 0000000000..1dce65924b
--- /dev/null
+++ b/templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoModelBuilderConfigurationOptions.cs
@@ -0,0 +1,14 @@
+using JetBrains.Annotations;
+using Volo.Abp.MongoDB;
+
+namespace MyCompanyName.MyModuleName.MongoDB
+{
+ public class MyModuleNameMongoModelBuilderConfigurationOptions : MongoModelBuilderConfigurationOptions
+ {
+ public MyModuleNameMongoModelBuilderConfigurationOptions(
+ [NotNull] string tablePrefix = MyModuleNameConsts.DefaultDbTablePrefix)
+ : base(tablePrefix)
+ {
+ }
+ }
+}
\ No newline at end of file