diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreModule.cs index 97195bd852..6b11457739 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreModule.cs @@ -4,13 +4,15 @@ using Volo.Abp.Modularity; namespace Volo.Abp.SettingManagement.EntityFrameworkCore { - [DependsOn(typeof(AbpSettingManagementDomainModule))] - [DependsOn(typeof(AbpEntityFrameworkCoreModule))] + [DependsOn( + typeof(AbpSettingManagementDomainModule), + typeof(AbpEntityFrameworkCoreModule) + )] public class AbpSettingManagementEntityFrameworkCoreModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.AddAbpDbContext(options => + context.Services.AddAbpDbContext(options => { options.AddDefaultRepositories(); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContext.cs new file mode 100644 index 0000000000..6567782997 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContext.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; + +namespace Volo.Abp.SettingManagement.EntityFrameworkCore +{ + [ConnectionStringName("AbpSettingManagement")] + public class SettingManagementDbContext : AbpDbContext, ISettingManagementDbContext + { + public static string TablePrefix { get; set; } = AbpSettingManagementConsts.DefaultDbTablePrefix; + + public static string Schema { get; set; } = AbpSettingManagementConsts.DefaultDbSchema; + + public DbSet Settings { get; set; } + + public SettingManagementDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + builder.ConfigureSettingManagement(TablePrefix, Schema); + } + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs new file mode 100644 index 0000000000..5c8c68b4f4 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs @@ -0,0 +1,34 @@ +using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore; + +namespace Volo.Abp.SettingManagement.EntityFrameworkCore +{ + public static class SettingManagementDbContextModelBuilderExtensions + { + //TODO: Instead of getting parameters, get a action of SettingManagementModelBuilderConfigurationOptions like other modules + public static void ConfigureSettingManagement( + [NotNull] this ModelBuilder builder, + [CanBeNull] string tablePrefix = AbpSettingManagementConsts.DefaultDbTablePrefix, + [CanBeNull] string schema = AbpSettingManagementConsts.DefaultDbSchema) + { + Check.NotNull(builder, nameof(builder)); + + if (tablePrefix == null) + { + tablePrefix = ""; + } + + builder.Entity(b => + { + b.ToTable(tablePrefix + "Settings", schema); + + b.Property(x => x.Name).HasMaxLength(SettingConsts.MaxNameLength).IsRequired(); + b.Property(x => x.Value).HasMaxLength(SettingConsts.MaxValueLength).IsRequired(); + b.Property(x => x.ProviderName).HasMaxLength(SettingConsts.MaxProviderNameLength); + b.Property(x => x.ProviderKey).HasMaxLength(SettingConsts.MaxProviderKeyLength); + + b.HasIndex(x => new {x.Name, x.ProviderName, x.ProviderKey}); + }); + } + } +} \ No newline at end of file diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs index c392f1da64..1a234961bc 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs @@ -32,8 +32,8 @@ namespace Volo.Abp.SettingManagement.EntityFrameworkCore var connection = new SqliteConnection("Data Source=:memory:"); connection.Open(); - new AbpSettingManagementDbContext( - new DbContextOptionsBuilder().UseSqlite(connection).Options + new SettingManagementDbContext( + new DbContextOptionsBuilder().UseSqlite(connection).Options ).GetService().CreateTables(); return connection;