From 741a1e4cb013f41059e9d063dc345eae29d5586e Mon Sep 17 00:00:00 2001 From: sassassin <530521314@qq.com> Date: Thu, 2 Sep 2021 20:46:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=95=B4=E7=90=86EFCore=E5=B1=82=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appsettings.Production.json | 9 +++++ .../appsettings.Stage.json | 9 +++++ .../AbpTemplateEntityFrameworkModule.cs | 38 ++++++++++--------- .../DefaultLanguagesCreator.cs | 33 +++++++--------- .../DefaultSettingsCreator.cs | 28 +++++++------- .../Seed/Host/DefaultEditionCreator.cs | 11 ++++-- .../Seed/Host/HostRoleAndUserCreator.cs | 25 ++++++------ .../Seed/Host/InitialHostDbBuilder.cs | 6 ++- .../EntityFrameworkCore/Seed/SeedHelper.cs | 9 ++--- .../Seed/Tenants/DefaultTenantBuilder.cs | 2 +- .../Seed/Tenants/InitialTenantDbBuilder.cs | 31 +++++++++++++++ .../Seed/Tenants/TenantRoleAndUserBuilder.cs | 14 +++---- 12 files changed, 134 insertions(+), 81 deletions(-) create mode 100644 src/PearAdmin.AbpTemplate.Admin/appsettings.Production.json create mode 100644 src/PearAdmin.AbpTemplate.Admin/appsettings.Stage.json rename src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/{Host => Common}/DefaultLanguagesCreator.cs (53%) rename src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/{Host => Common}/DefaultSettingsCreator.cs (69%) create mode 100644 src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs diff --git a/src/PearAdmin.AbpTemplate.Admin/appsettings.Production.json b/src/PearAdmin.AbpTemplate.Admin/appsettings.Production.json new file mode 100644 index 0000000..96289c0 --- /dev/null +++ b/src/PearAdmin.AbpTemplate.Admin/appsettings.Production.json @@ -0,0 +1,9 @@ +{ + "ConnectionStrings": { + "Default": "", + "Redis": "" + }, + "App": { + "WebSiteRootAddress": "http://localhost:9527/" + } +} diff --git a/src/PearAdmin.AbpTemplate.Admin/appsettings.Stage.json b/src/PearAdmin.AbpTemplate.Admin/appsettings.Stage.json new file mode 100644 index 0000000..96289c0 --- /dev/null +++ b/src/PearAdmin.AbpTemplate.Admin/appsettings.Stage.json @@ -0,0 +1,9 @@ +{ + "ConnectionStrings": { + "Default": "", + "Redis": "" + }, + "App": { + "WebSiteRootAddress": "http://localhost:9527/" + } +} diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/AbpTemplateEntityFrameworkModule.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/AbpTemplateEntityFrameworkModule.cs index 5b8acbb..44ee596 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/AbpTemplateEntityFrameworkModule.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/AbpTemplateEntityFrameworkModule.cs @@ -7,31 +7,33 @@ using PearAdmin.AbpTemplate.EntityFrameworkCore.Seed; namespace PearAdmin.AbpTemplate.EntityFrameworkCore { [DependsOn( - typeof(AbpTemplateCoreModule), + typeof(AbpTemplateCoreModule), typeof(AbpZeroCoreEntityFrameworkCoreModule))] public class AbpTemplateEntityFrameworkModule : AbpModule { - /* Used it tests to skip dbcontext registration, in order to use in-memory database of EF Core */ + // 集成测试中使用,跳过DbContext注册和基础数据初始化 + // 集成测试时使用内存数据库 public bool SkipDbContextRegistration { get; set; } - public bool SkipDbSeed { get; set; } public override void PreInitialize() { - if (!SkipDbContextRegistration) + if (SkipDbContextRegistration) { - Configuration.Modules.AbpEfCore().AddDbContext(options => - { - if (options.ExistingConnection != null) - { - AbpTemplateDbContextConfigurer.Configure(options.DbContextOptions, options.ExistingConnection); - } - else - { - AbpTemplateDbContextConfigurer.Configure(options.DbContextOptions, options.ConnectionString); - } - }); + return; } + + Configuration.Modules.AbpEfCore().AddDbContext(options => + { + if (options.ExistingConnection != null) + { + AbpTemplateDbContextConfigurer.Configure(options.DbContextOptions, options.ExistingConnection); + } + else + { + AbpTemplateDbContextConfigurer.Configure(options.DbContextOptions, options.ConnectionString); + } + }); } public override void Initialize() @@ -41,10 +43,12 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore public override void PostInitialize() { - if (!SkipDbSeed) + if (SkipDbSeed) { - SeedHelper.SeedHostDb(IocManager); + return; } + + SeedHelper.SeedHostDb(IocManager); } } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultLanguagesCreator.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultLanguagesCreator.cs similarity index 53% rename from src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultLanguagesCreator.cs rename to src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultLanguagesCreator.cs index 3872728..64cae4b 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultLanguagesCreator.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultLanguagesCreator.cs @@ -1,40 +1,35 @@ using System.Collections.Generic; using System.Linq; -using Microsoft.EntityFrameworkCore; using Abp.Localization; -using Abp.MultiTenancy; +using Microsoft.EntityFrameworkCore; -namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host +namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Common { public class DefaultLanguagesCreator { - public static List InitialLanguages => GetInitialLanguages(); - private readonly AbpTemplateDbContext _context; + private readonly int? _tenantId; - private static List GetInitialLanguages() - { - var tenantId = AbpTemplateCoreConsts.MultiTenancyEnabled ? null : (int?)MultiTenancyConsts.DefaultTenantId; - return new List - { - new ApplicationLanguage(tenantId, "zh-Hans", "简体中文", "famfamfam-flags cn"), - new ApplicationLanguage(tenantId, "en", "English", "famfamfam-flags us") - }; - } - - public DefaultLanguagesCreator(AbpTemplateDbContext context) + public DefaultLanguagesCreator(AbpTemplateDbContext context, int? tenantId = null) { _context = context; + _tenantId = tenantId; } public void Create() { - CreateLanguages(); + CreateDefaultLanguage(); } - private void CreateLanguages() + private void CreateDefaultLanguage() { - foreach (var language in InitialLanguages) + var initialLanguages = new List + { + new ApplicationLanguage(_tenantId, "zh-Hans", "简体中文", "famfamfam-flags cn"), + new ApplicationLanguage(_tenantId, "en", "English", "famfamfam-flags us") + }; + + foreach (var language in initialLanguages) { AddLanguageIfNotExists(language); } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultSettingsCreator.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs similarity index 69% rename from src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultSettingsCreator.cs rename to src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs index c6c9891..e9a0412 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultSettingsCreator.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs @@ -1,36 +1,36 @@ using System.Linq; -using Microsoft.EntityFrameworkCore; using Abp.Configuration; using Abp.Localization; using Abp.MultiTenancy; using Abp.Net.Mail; +using Microsoft.EntityFrameworkCore; -namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host +namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Common { public class DefaultSettingsCreator { private readonly AbpTemplateDbContext _context; + private readonly int? _tenantId; - public DefaultSettingsCreator(AbpTemplateDbContext context) + public DefaultSettingsCreator(AbpTemplateDbContext context, int? tenantId = null) { _context = context; + _tenantId = tenantId; } public void Create() { - int? tenantId = null; - - if (AbpTemplateCoreConsts.MultiTenancyEnabled == false) - { - tenantId = MultiTenancyConsts.DefaultTenantId; - } + CreateDefaultSetting(); + } - // Emailing - AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, "admin@mydomain.com", tenantId); - AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, "mydomain.com mailer", tenantId); + private void CreateDefaultSetting() + { + // 邮箱设置 + AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, "admin@mydomain.com", _tenantId); + AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, "mydomain.com mailer", _tenantId); - // Languages - AddSettingIfNotExists(LocalizationSettingNames.DefaultLanguage, "zh-Hans", tenantId); + // 语言设置 + AddSettingIfNotExists(LocalizationSettingNames.DefaultLanguage, "zh-Hans", _tenantId); } private void AddSettingIfNotExists(string name, string value, int? tenantId = null) diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultEditionCreator.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultEditionCreator.cs index 61268fe..7351182 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultEditionCreator.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/DefaultEditionCreator.cs @@ -1,7 +1,7 @@ using System.Linq; -using Microsoft.EntityFrameworkCore; using Abp.Application.Editions; using Abp.Application.Features; +using Microsoft.EntityFrameworkCore; using PearAdmin.AbpTemplate.Editions; namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host @@ -22,14 +22,19 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host private void CreateEditions() { + // 初始化默认版本 var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); if (defaultEdition == null) { - defaultEdition = new Edition { Name = EditionManager.DefaultEditionName, DisplayName = EditionManager.DefaultEditionName }; + defaultEdition = new Edition() + { + Name = EditionManager.DefaultEditionName, + DisplayName = EditionManager.DefaultEditionName + }; _context.Editions.Add(defaultEdition); _context.SaveChanges(); - /* Add desired features to the standard edition, if wanted... */ + // 为当前默认版本添加初始功能 } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/HostRoleAndUserCreator.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/HostRoleAndUserCreator.cs index bd5826d..d94ca6a 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/HostRoleAndUserCreator.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/HostRoleAndUserCreator.cs @@ -1,14 +1,14 @@ using System.Linq; -using Microsoft.EntityFrameworkCore; using Abp.Authorization; using Abp.Authorization.Roles; using Abp.Authorization.Users; using Abp.MultiTenancy; +using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; using PearAdmin.AbpTemplate.Authorization; using PearAdmin.AbpTemplate.Authorization.Roles; using PearAdmin.AbpTemplate.Authorization.Users; -using Microsoft.AspNetCore.Identity; -using Microsoft.Extensions.Options; namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host { @@ -28,16 +28,20 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host private void CreateHostRoleAndUsers() { - // Admin role for host + // 为宿主创建管理员角色 var adminRoleForHost = _context.Roles.IgnoreQueryFilters().FirstOrDefault(r => r.TenantId == null && r.Name == StaticRoleNames.Host.Admin); if (adminRoleForHost == null) { - adminRoleForHost = _context.Roles.Add(new Role(null, StaticRoleNames.Host.Admin) { IsStatic = true, IsDefault = true }).Entity; + adminRoleForHost = _context.Roles.Add(new Role(null, StaticRoleNames.Host.Admin) + { + IsStatic = true, + IsDefault = true + }).Entity; _context.SaveChanges(); } - // Grant all permissions to admin role for host + // 为宿主管理员角色分配宿主所有权限 var grantedPermissions = _context.Permissions.IgnoreQueryFilters() .OfType() @@ -47,8 +51,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host var permissions = PermissionFinder .GetAllPermissions(new AppPermissionProvider()) - .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host) && - !grantedPermissions.Contains(p.Name)) + .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host) && !grantedPermissions.Contains(p.Name)) .ToList(); if (permissions.Any()) @@ -65,7 +68,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host _context.SaveChanges(); } - // Admin user for host + // 为宿主创建管理员用户 var adminUserForHost = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == null && u.UserName == AbpUserBase.AdminUserName); if (adminUserForHost == null) @@ -87,11 +90,9 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host adminUserForHost = _context.Users.Add(user).Entity; _context.SaveChanges(); - // Assign Admin role to admin user + // 为宿主管理员用户分配宿主管理员角色 _context.UserRoles.Add(new UserRole(null, adminUserForHost.Id, adminRoleForHost.Id)); _context.SaveChanges(); - - _context.SaveChanges(); } } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/InitialHostDbBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/InitialHostDbBuilder.cs index fc282d4..a0548f4 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/InitialHostDbBuilder.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Host/InitialHostDbBuilder.cs @@ -1,4 +1,6 @@ -namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host +using PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Common; + +namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host { public class InitialHostDbBuilder { @@ -12,8 +14,8 @@ public void Create() { new DefaultEditionCreator(_context).Create(); - new DefaultLanguagesCreator(_context).Create(); new HostRoleAndUserCreator(_context).Create(); + new DefaultLanguagesCreator(_context).Create(); new DefaultSettingsCreator(_context).Create(); _context.SaveChanges(); diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs index 645b807..b3a9886 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs @@ -1,10 +1,10 @@ using System; using System.Transactions; -using Microsoft.EntityFrameworkCore; using Abp.Dependency; using Abp.Domain.Uow; using Abp.EntityFrameworkCore.Uow; using Abp.MultiTenancy; +using Microsoft.EntityFrameworkCore; using PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Host; using PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants; @@ -21,12 +21,9 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed { context.SuppressAutoSetTenantId = true; - // Host seed + // 宿主基础数据初始化 new InitialHostDbBuilder(context).Create(); - - // Default tenant seed (in host database). - new DefaultTenantBuilder(context).Create(); - new TenantRoleAndUserBuilder(context, MultiTenancyConsts.DefaultTenantId).Create(); + new InitialTenantDbBuilder(context).Create(); } private static void WithDbContext(IIocResolver iocResolver, Action contextAction) diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs index f4e8a0e..38df8cd 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs @@ -22,7 +22,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants private void CreateDefaultTenant() { - // Default tenant + // 创建默认租户(1) var defaultTenant = _context.Tenants.IgnoreQueryFilters().FirstOrDefault(t => t.TenancyName == AbpTenantBase.DefaultTenantName); if (defaultTenant == null) diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs new file mode 100644 index 0000000..a3dcac8 --- /dev/null +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs @@ -0,0 +1,31 @@ +using Abp.MultiTenancy; +using PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Common; + +namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants +{ + public class InitialTenantDbBuilder + { + private readonly AbpTemplateDbContext _context; + + public InitialTenantDbBuilder(AbpTemplateDbContext context) + { + _context = context; + } + + public void Create() + { + //默认租户初始化(Id为1) + DefaultTenant(); + + _context.SaveChanges(); + } + + private void DefaultTenant() + { + new DefaultTenantBuilder(_context).Create(); + new TenantRoleAndUserBuilder(_context, MultiTenancyConsts.DefaultTenantId).Create(); + new DefaultLanguagesCreator(_context, MultiTenancyConsts.DefaultTenantId).Create(); + new DefaultSettingsCreator(_context, MultiTenancyConsts.DefaultTenantId).Create(); + } + } +} diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs index f611e13..2da9370 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs @@ -1,11 +1,11 @@ using System.Linq; -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Options; using Abp.Authorization; using Abp.Authorization.Roles; using Abp.Authorization.Users; using Abp.MultiTenancy; +using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; using PearAdmin.AbpTemplate.Authorization; using PearAdmin.AbpTemplate.Authorization.Roles; using PearAdmin.AbpTemplate.Authorization.Users; @@ -30,7 +30,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants private void CreateRolesAndUsers() { - // Admin role + // 创建租户管理员角色 var adminRole = _context.Roles.IgnoreQueryFilters().FirstOrDefault(r => r.TenantId == _tenantId && r.Name == StaticRoleNames.Tenants.Admin); if (adminRole == null) @@ -39,7 +39,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants _context.SaveChanges(); } - // Grant all permissions to admin role + // 为租户管理员角色赋予所有权限 var grantedPermissions = _context.Permissions.IgnoreQueryFilters() .OfType() @@ -67,7 +67,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants _context.SaveChanges(); } - // Admin user + // 创建租户管理员用户 var adminUser = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == _tenantId && u.UserName == AbpUserBase.AdminUserName); if (adminUser == null) @@ -80,7 +80,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants _context.Users.Add(adminUser); _context.SaveChanges(); - // Assign Admin role to admin user + // 为租户管理员用户分配管理员角色 _context.UserRoles.Add(new UserRole(_tenantId, adminUser.Id, adminRole.Id)); _context.SaveChanges(); } -- Gitee From cafb977ad73ec08b07fb678ff9153466f2c53571 Mon Sep 17 00:00:00 2001 From: sassassin <530521314@qq.com> Date: Thu, 2 Sep 2021 20:48:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8F=B0=E5=88=9D=E5=A7=8B=E5=8C=96=E5=B9=B2=E5=87=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PearAdmin.AbpTemplate.Admin/Program.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/PearAdmin.AbpTemplate.Admin/Program.cs b/src/PearAdmin.AbpTemplate.Admin/Program.cs index 315ca8e..f5be82b 100644 --- a/src/PearAdmin.AbpTemplate.Admin/Program.cs +++ b/src/PearAdmin.AbpTemplate.Admin/Program.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Logging; namespace PearAdmin.AbpTemplate.Admin { @@ -14,6 +15,15 @@ namespace PearAdmin.AbpTemplate.Admin { return WebHost.CreateDefaultBuilder(args) .UseStartup() + .ConfigureLogging((hostingContext, logging) => + { + logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")) + .AddDebug() + .AddEventSourceLogger() + .AddFilter("System", LogLevel.Debug) + .AddFilter("Microsoft.EntityFrameworkCore.*", LogLevel.Warning) + .AddFilter("Microsoft.AspNetCore.*", LogLevel.Error); + }) .Build(); } } -- Gitee