From 5c86edb5f60a649baf1587ae93cbb8544230a2a9 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 11 Jul 2018 16:09:44 +0300 Subject: [PATCH] Added database providers to the module template. --- .../module/MyCompanyName.MyModuleName.sln | 26 +++++++++++++ ...me.MyModuleName.EntityFrameworkCore.csproj | 16 ++++++++ .../IMyModuleNameDbContext.cs | 13 +++++++ .../MyModuleNameDbContext.cs | 35 +++++++++++++++++ ...uleNameDbContextModelCreatingExtensions.cs | 38 +++++++++++++++++++ .../MyModuleNameEntityFrameworkCoreModule.cs | 25 ++++++++++++ ...uleNameModelBuilderConfigurationOptions.cs | 18 +++++++++ .../MyCompanyName.MyModuleName.MongoDB.csproj | 15 ++++++++ .../AbpUsersMongoDbContextExtensions.cs | 20 ++++++++++ .../MongoDB/IMyModuleNameMongoDbContext.cs | 13 +++++++ .../MongoDB/MyModuleNameBsonClassMap.cs | 21 ++++++++++ .../MongoDB/MyModuleNameMongoDbContext.cs | 25 ++++++++++++ .../MongoDB/MyModuleNameMongoDbModule.cs | 27 +++++++++++++ ...meMongoModelBuilderConfigurationOptions.cs | 14 +++++++ 14 files changed, 306 insertions(+) create mode 100644 templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyModuleName.EntityFrameworkCore.csproj create mode 100644 templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/IMyModuleNameDbContext.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContext.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.EntityFrameworkCore/MyCompanyName/MyModuleName/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName.MyModuleName.MongoDB.csproj create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/AbpUsersMongoDbContextExtensions.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/IMyModuleNameMongoDbContext.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameBsonClassMap.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbContext.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoDbModule.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.MongoDB/MyCompanyName/MyModuleName/MongoDB/MyModuleNameMongoModelBuilderConfigurationOptions.cs 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