From 819868c840f902cf8ced9ca63b3b1796ffeb6c86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=86=9B?= <510423039@qq.com> Date: Wed, 15 Mar 2023 15:24:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=98=AF=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8?= =?UTF-8?q?EF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...taDictionaryManagementHttpApiHostModule.cs | 2 +- ...taDictionaryManagement.HttpApi.Host.csproj | 1 + .../20210812130334_Init.Designer.cs | 153 -- .../Migrations/20210812154152_AddTenantId.cs | 24 - ...ner.cs => 20230315062044_Init.Designer.cs} | 33 +- ...2130334_Init.cs => 20230315062044_Init.cs} | 57 +- ...ApiHostMigrationsDbContextModelSnapshot.cs | 28 +- .../DataDictionaryManagementConsts.cs | 2 - ...agementDbContextModelCreatingExtensions.cs | 21 +- .../DataDictionaryAppService_Tests.cs | 4 +- .../DataDictionaryManager_Tests.cs | 4 +- .../EfCoreDataDictionaryRepository_Tests.cs | 4 +- .../DataDictionaryDataSeedContributor.cs | 2 +- ...DictionaryManagementDataSeedContributor.cs | 25 - .../DataDictionaryManagementTestConsts.cs | 2 +- ...ner.cs => 20230315062459_Init.Designer.cs} | 14 +- ...2015410_Init.cs => 20230315062459_Init.cs} | 9 +- ...ApiHostMigrationsDbContextModelSnapshot.cs | 11 +- .../Notifications/Aggregates/Notification.cs | 12 +- .../Aggregates/NotificationSubscription.cs | 12 +- ...agementDbContextModelCreatingExtensions.cs | 7 +- .../wwwroot/images/xxx-job.png | Bin 25256 -> 0 bytes ...ementAndNotificationManagement.Designer.cs | 1714 +++++++++++++++++ ...naryManagementAndNotificationManagement.cs | 64 + .../AbpProDbContextModelSnapshot.cs | 6 +- .../AbpPro/SharedHostingMicroserviceModule.cs | 4 +- 26 files changed, 1915 insertions(+), 300 deletions(-) delete mode 100644 aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.Designer.cs delete mode 100644 aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.cs rename aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/{20210812154152_AddTenantId.Designer.cs => 20230315062044_Init.Designer.cs} (86%) rename aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/{20210812130334_Init.cs => 20230315062044_Init.cs} (65%) rename aspnet-core/modules/DataDictionaryManagement/{src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries => test/Lion.AbpPro.DataDictionaryManagement.TestBase}/DataDictionaryDataSeedContributor.cs (95%) delete mode 100644 aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementDataSeedContributor.cs rename aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/{20220702015410_Init.Designer.cs => 20230315062459_Init.Designer.cs} (93%) rename aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/{20220702015410_Init.cs => 20230315062459_Init.cs} (93%) delete mode 100644 aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/wwwroot/images/xxx-job.png create mode 100644 aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.Designer.cs create mode 100644 aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.cs diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/DataDictionaryManagementHttpApiHostModule.cs b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/DataDictionaryManagementHttpApiHostModule.cs index 5214444a..57f5c214 100644 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/DataDictionaryManagementHttpApiHostModule.cs +++ b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/DataDictionaryManagementHttpApiHostModule.cs @@ -25,7 +25,7 @@ namespace Lion.AbpPro.DataDictionaryManagement // { // options.IsEnabled = MultiTenancyConsts.IsEnabled; // }); - + context.Services.AddAlwaysAllowAuthorization(); ConfigureSwaggerServices(context); ConfigureCache(context); ConfigureCors(context); diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host.csproj b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host.csproj index f3c00529..260f34d6 100644 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host.csproj +++ b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host.csproj @@ -22,6 +22,7 @@ + diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.Designer.cs b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.Designer.cs deleted file mode 100644 index 073a1571..00000000 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.Designer.cs +++ /dev/null @@ -1,153 +0,0 @@ -// -using System; -using Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Volo.Abp.EntityFrameworkCore; - -namespace Lion.AbpPro.DataDictionaryManagement.Migrations -{ - [DbContext(typeof(DataDictionaryManagementHttpApiHostMigrationsDbContext))] - [Migration("20210812130334_Init")] - partial class Init - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) - .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.7"); - - modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Code") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("varchar(40) CHARACTER SET utf8mb4") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime(6)") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("char(36)") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("char(36)") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime(6)") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("varchar(1024) CHARACTER SET utf8mb4"); - - b.Property("DisplayText") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); - - b.Property("ExtraProperties") - .HasColumnType("longtext CHARACTER SET utf8mb4") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(1)") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime(6)") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("char(36)") - .HasColumnName("LastModifierId"); - - b.HasKey("Id"); - - b.ToTable("DataDictionary"); - }); - - modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Code") - .HasColumnType("longtext CHARACTER SET utf8mb4"); - - b.Property("CreationTime") - .HasColumnType("datetime(6)") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("char(36)") - .HasColumnName("CreatorId"); - - b.Property("DataDictionaryId") - .HasColumnType("char(36)"); - - b.Property("Description") - .HasColumnType("longtext CHARACTER SET utf8mb4"); - - b.Property("DisplayText") - .HasColumnType("longtext CHARACTER SET utf8mb4"); - - b.Property("IsEnabled") - .HasColumnType("tinyint(1)"); - - b.Property("LastModificationTime") - .HasColumnType("datetime(6)") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("char(36)") - .HasColumnName("LastModifierId"); - - b.Property("Order") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("DataDictionaryId"); - - b.ToTable("DataDictionaryDetail"); - }); - - modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => - { - b.HasOne("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", null) - .WithMany("Details") - .HasForeignKey("DataDictionaryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", b => - { - b.Navigation("Details"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.cs b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.cs deleted file mode 100644 index d26ab3b8..00000000 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Lion.AbpPro.DataDictionaryManagement.Migrations -{ - public partial class AddTenantId : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "TenantId", - table: "DataDictionary", - type: "char(36)", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "TenantId", - table: "DataDictionary"); - } - } -} diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.Designer.cs b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20230315062044_Init.Designer.cs similarity index 86% rename from aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.Designer.cs rename to aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20230315062044_Init.Designer.cs index 1fcf9de0..eaf3978e 100644 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812154152_AddTenantId.Designer.cs +++ b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20230315062044_Init.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; @@ -7,19 +7,22 @@ using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Volo.Abp.EntityFrameworkCore; +#nullable disable + namespace Lion.AbpPro.DataDictionaryManagement.Migrations { [DbContext(typeof(DataDictionaryManagementHttpApiHostMigrationsDbContext))] - [Migration("20210812154152_AddTenantId")] - partial class AddTenantId + [Migration("20230315062044_Init")] + partial class Init { + /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) - .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.7"); + .HasAnnotation("ProductVersion", "7.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", b => { @@ -30,12 +33,12 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.Property("Code") .IsRequired() .HasMaxLength(64) - .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + .HasColumnType("varchar(64)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasMaxLength(40) - .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnType("varchar(40)") .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") @@ -57,15 +60,15 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.Property("Description") .IsRequired() .HasMaxLength(1024) - .HasColumnType("varchar(1024) CHARACTER SET utf8mb4"); + .HasColumnType("varchar(1024)"); b.Property("DisplayText") .IsRequired() .HasMaxLength(64) - .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + .HasColumnType("varchar(64)"); b.Property("ExtraProperties") - .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnType("longtext") .HasColumnName("ExtraProperties"); b.Property("IsDeleted") @@ -88,7 +91,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.HasKey("Id"); - b.ToTable("DataDictionary"); + b.ToTable("DataDictionary", (string)null); }); modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => @@ -98,7 +101,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations .HasColumnType("char(36)"); b.Property("Code") - .HasColumnType("longtext CHARACTER SET utf8mb4"); + .HasColumnType("longtext"); b.Property("CreationTime") .HasColumnType("datetime(6)") @@ -112,10 +115,10 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations .HasColumnType("char(36)"); b.Property("Description") - .HasColumnType("longtext CHARACTER SET utf8mb4"); + .HasColumnType("longtext"); b.Property("DisplayText") - .HasColumnType("longtext CHARACTER SET utf8mb4"); + .HasColumnType("longtext"); b.Property("IsEnabled") .HasColumnType("tinyint(1)"); @@ -135,7 +138,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.HasIndex("DataDictionaryId"); - b.ToTable("DataDictionaryDetail"); + b.ToTable("DataDictionaryDetail", (string)null); }); modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.cs b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20230315062044_Init.cs similarity index 65% rename from aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.cs rename to aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20230315062044_Init.cs index 5e488d27..d2ce2d92 100644 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20210812130334_Init.cs +++ b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/20230315062044_Init.cs @@ -1,50 +1,67 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; +#nullable disable + namespace Lion.AbpPro.DataDictionaryManagement.Migrations { + /// public partial class Init : Migration { + /// protected override void Up(MigrationBuilder migrationBuilder) { + migrationBuilder.AlterDatabase() + .Annotation("MySql:CharSet", "utf8mb4"); + migrationBuilder.CreateTable( name: "DataDictionary", columns: table => new { - Id = table.Column(type: "char(36)", nullable: false), - Code = table.Column(type: "varchar(64) CHARACTER SET utf8mb4", maxLength: 64, nullable: false), - DisplayText = table.Column(type: "varchar(64) CHARACTER SET utf8mb4", maxLength: 64, nullable: false), - Description = table.Column(type: "varchar(1024) CHARACTER SET utf8mb4", maxLength: 1024, nullable: false), - ExtraProperties = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), - ConcurrencyStamp = table.Column(type: "varchar(40) CHARACTER SET utf8mb4", maxLength: 40, nullable: true), + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Code = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + DisplayText = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), CreationTime = table.Column(type: "datetime(6)", nullable: false), - CreatorId = table.Column(type: "char(36)", nullable: true), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), LastModificationTime = table.Column(type: "datetime(6)", nullable: true), - LastModifierId = table.Column(type: "char(36)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), IsDeleted = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "char(36)", nullable: true), + DeleterId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), DeletionTime = table.Column(type: "datetime(6)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_DataDictionary", x => x.Id); - }); + }) + .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "DataDictionaryDetail", columns: table => new { - Id = table.Column(type: "char(36)", nullable: false), - DataDictionaryId = table.Column(type: "char(36)", nullable: false), - Code = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + DataDictionaryId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Code = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), Order = table.Column(type: "int", nullable: false), - DisplayText = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), - Description = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), + DisplayText = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), IsEnabled = table.Column(type: "tinyint(1)", nullable: false), CreationTime = table.Column(type: "datetime(6)", nullable: false), - CreatorId = table.Column(type: "char(36)", nullable: true), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), LastModificationTime = table.Column(type: "datetime(6)", nullable: true), - LastModifierId = table.Column(type: "char(36)", nullable: true) + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") }, constraints: table => { @@ -55,7 +72,8 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations principalTable: "DataDictionary", principalColumn: "Id", onDelete: ReferentialAction.Cascade); - }); + }) + .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_DataDictionaryDetail_DataDictionaryId", @@ -63,6 +81,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations column: "DataDictionaryId"); } + /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( diff --git a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/DataDictionaryManagementHttpApiHostMigrationsDbContextModelSnapshot.cs b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/DataDictionaryManagementHttpApiHostMigrationsDbContextModelSnapshot.cs index fbfb185a..cefc7280 100644 --- a/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/DataDictionaryManagementHttpApiHostMigrationsDbContextModelSnapshot.cs +++ b/aspnet-core/modules/DataDictionaryManagement/host/Lion.AbpPro.DataDictionaryManagement.HttpApi.Host/Migrations/DataDictionaryManagementHttpApiHostMigrationsDbContextModelSnapshot.cs @@ -1,4 +1,4 @@ -// +// using System; using Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; @@ -6,6 +6,8 @@ using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Volo.Abp.EntityFrameworkCore; +#nullable disable + namespace Lion.AbpPro.DataDictionaryManagement.Migrations { [DbContext(typeof(DataDictionaryManagementHttpApiHostMigrationsDbContext))] @@ -16,8 +18,8 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) - .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.7"); + .HasAnnotation("ProductVersion", "7.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", b => { @@ -28,12 +30,12 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.Property("Code") .IsRequired() .HasMaxLength(64) - .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + .HasColumnType("varchar(64)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasMaxLength(40) - .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnType("varchar(40)") .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") @@ -55,15 +57,15 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.Property("Description") .IsRequired() .HasMaxLength(1024) - .HasColumnType("varchar(1024) CHARACTER SET utf8mb4"); + .HasColumnType("varchar(1024)"); b.Property("DisplayText") .IsRequired() .HasMaxLength(64) - .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + .HasColumnType("varchar(64)"); b.Property("ExtraProperties") - .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnType("longtext") .HasColumnName("ExtraProperties"); b.Property("IsDeleted") @@ -86,7 +88,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.HasKey("Id"); - b.ToTable("DataDictionary"); + b.ToTable("DataDictionary", (string)null); }); modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => @@ -96,7 +98,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations .HasColumnType("char(36)"); b.Property("Code") - .HasColumnType("longtext CHARACTER SET utf8mb4"); + .HasColumnType("longtext"); b.Property("CreationTime") .HasColumnType("datetime(6)") @@ -110,10 +112,10 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations .HasColumnType("char(36)"); b.Property("Description") - .HasColumnType("longtext CHARACTER SET utf8mb4"); + .HasColumnType("longtext"); b.Property("DisplayText") - .HasColumnType("longtext CHARACTER SET utf8mb4"); + .HasColumnType("longtext"); b.Property("IsEnabled") .HasColumnType("tinyint(1)"); @@ -133,7 +135,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.Migrations b.HasIndex("DataDictionaryId"); - b.ToTable("DataDictionaryDetail"); + b.ToTable("DataDictionaryDetail", (string)null); }); modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => diff --git a/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain.Shared/DataDictionaryManagementConsts.cs b/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain.Shared/DataDictionaryManagementConsts.cs index 5542156b..be86f1f2 100644 --- a/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain.Shared/DataDictionaryManagementConsts.cs +++ b/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain.Shared/DataDictionaryManagementConsts.cs @@ -2,8 +2,6 @@ namespace Lion.AbpPro.DataDictionaryManagement { public class DataDictionaryManagementConsts { - public static Guid SeedDataDictionaryId = new Guid("39fdb236-a90e-e4b5-02a0-2866a8cf9821"); - /// 名称空间 public const string NameSpace = "Lion.AbpPro.DataDictionaryManagement"; /// 默认语言 diff --git a/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore/EntityFrameworkCore/DataDictionaryManagementDbContextModelCreatingExtensions.cs b/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore/EntityFrameworkCore/DataDictionaryManagementDbContextModelCreatingExtensions.cs index 1ca79ebd..0fe9ca47 100644 --- a/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore/EntityFrameworkCore/DataDictionaryManagementDbContextModelCreatingExtensions.cs +++ b/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore/EntityFrameworkCore/DataDictionaryManagementDbContextModelCreatingExtensions.cs @@ -6,25 +6,18 @@ namespace Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - + builder.Entity(b => { - builder.Entity(b => - { - b.ToTable(DataDictionaryManagementDbProperties.DbTablePrefix + nameof(DataDictionary), - DataDictionaryManagementDbProperties.DbSchema); - b.ConfigureByConvention(); - }); + b.ToTable(DataDictionaryManagementDbProperties.DbTablePrefix + nameof(DataDictionary), DataDictionaryManagementDbProperties.DbSchema); + b.HasMany(e => e.Details).WithOne().HasForeignKey(uc => uc.DataDictionaryId).IsRequired(); + b.ConfigureByConvention(); }); - + builder.Entity(b => { - builder.Entity(b => - { - b.ToTable(DataDictionaryManagementDbProperties.DbTablePrefix + nameof(DataDictionaryDetail), - DataDictionaryManagementDbProperties.DbSchema); - b.ConfigureByConvention(); - }); + b.ToTable(DataDictionaryManagementDbProperties.DbTablePrefix + nameof(DataDictionaryDetail), DataDictionaryManagementDbProperties.DbSchema); + b.ConfigureByConvention(); }); } } diff --git a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Application.Tests/DataDictionaries/DataDictionaryAppService_Tests.cs b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Application.Tests/DataDictionaries/DataDictionaryAppService_Tests.cs index c569ece0..9379fa24 100644 --- a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Application.Tests/DataDictionaries/DataDictionaryAppService_Tests.cs +++ b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Application.Tests/DataDictionaries/DataDictionaryAppService_Tests.cs @@ -47,7 +47,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries { var input = new CreateDataDictinaryDetailInput() { - Id = DataDictionaryManagementConsts.SeedDataDictionaryId, + Id = DataDictionaryManagementTestConsts.SeedDataDictionaryId, Code = "Detail", DisplayText = "明细", Description = "单元测试", @@ -58,7 +58,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries var result = await _dataDictionaryAppService.GetPagingDetailListAsync( new PagingDataDictionaryDetailInput() { - DataDictionaryId = DataDictionaryManagementConsts.SeedDataDictionaryId, + DataDictionaryId = DataDictionaryManagementTestConsts.SeedDataDictionaryId, Filter = "Detail" } ); diff --git a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Domain.Tests/DataDictionaries/DataDictionaryManager_Tests.cs b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Domain.Tests/DataDictionaries/DataDictionaryManager_Tests.cs index 0c491af5..e79372d3 100644 --- a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Domain.Tests/DataDictionaries/DataDictionaryManager_Tests.cs +++ b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.Domain.Tests/DataDictionaries/DataDictionaryManager_Tests.cs @@ -13,7 +13,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries public async Task Test_FindByIdAsync_Ok() { var entity = - await _dataDictionaryManager.FindByIdAsync(DataDictionaryManagementConsts.SeedDataDictionaryId); + await _dataDictionaryManager.FindByIdAsync(DataDictionaryManagementTestConsts.SeedDataDictionaryId); entity.DisplayText.ShouldBe("性别"); entity.Details.Count.ShouldBe(3); entity.Details.FirstOrDefault(e => e.Code == "None").IsEnabled.ShouldBeFalse(); @@ -43,7 +43,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries exception.Message.ShouldBe($"数据字典不存在"); var exception1 = await Record.ExceptionAsync(async () => - await _dataDictionaryManager.CreateDetailAsync(DataDictionaryManagementConsts.SeedDataDictionaryId, + await _dataDictionaryManager.CreateDetailAsync(DataDictionaryManagementTestConsts.SeedDataDictionaryId, "Man", "明细", "测试", 1)); exception1.Message.ShouldBe($"字典项Man已存在"); diff --git a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/DataDictionaries/EfCoreDataDictionaryRepository_Tests.cs b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/DataDictionaries/EfCoreDataDictionaryRepository_Tests.cs index c38bd3f1..bbfe815d 100644 --- a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/DataDictionaries/EfCoreDataDictionaryRepository_Tests.cs +++ b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/DataDictionaries/EfCoreDataDictionaryRepository_Tests.cs @@ -14,14 +14,14 @@ namespace Lion.AbpPro.DataDictionaryManagement.EntityFrameworkCore.DataDictionar public async Task Test_FindByIdAsync_Ok() { var entity = - await _dataDictionaryRepository.FindByIdAsync(DataDictionaryManagementConsts.SeedDataDictionaryId, + await _dataDictionaryRepository.FindByIdAsync(DataDictionaryManagementTestConsts.SeedDataDictionaryId, true); entity.DisplayText.ShouldBe("性别"); entity.Details.Count.ShouldBe(3); entity.Details.FirstOrDefault(e => e.Code == "None").IsEnabled.ShouldBeFalse(); var noDetailEntity = - await _dataDictionaryRepository.FindByIdAsync(DataDictionaryManagementConsts.SeedDataDictionaryId, + await _dataDictionaryRepository.FindByIdAsync(DataDictionaryManagementTestConsts.SeedDataDictionaryId, false); noDetailEntity.Details.Count.ShouldBe(0); } diff --git a/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/DataDictionaryDataSeedContributor.cs b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryDataSeedContributor.cs similarity index 95% rename from aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/DataDictionaryDataSeedContributor.cs rename to aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryDataSeedContributor.cs index 2d0b26dc..74b00499 100644 --- a/aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/DataDictionaryDataSeedContributor.cs +++ b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryDataSeedContributor.cs @@ -22,7 +22,7 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries var gender = await _dataDictionaryRepository.FindByCodeAsync("Gender"); if (gender == null) { - var id = context is {TenantId: null} ? DataDictionaryManagementConsts.SeedDataDictionaryId : _guidGenerator.Create(); + var id = context is {TenantId: null} ? DataDictionaryManagementTestConsts.SeedDataDictionaryId : _guidGenerator.Create(); var entity = new DataDictionary(id, "Gender", "性别", "单元测试", context?.TenantId); entity.AddDetail(_guidGenerator.Create(), "Man", "男", 1, "单元测试"); entity.AddDetail(_guidGenerator.Create(), "WoMan", "女", 2, "单元测试"); diff --git a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementDataSeedContributor.cs b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementDataSeedContributor.cs deleted file mode 100644 index dc6d5fbd..00000000 --- a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementDataSeedContributor.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Lion.AbpPro.DataDictionaryManagement -{ - public class DataDictionaryManagementDataSeedContributor : IDataSeedContributor, ITransientDependency - { - private readonly IGuidGenerator _guidGenerator; - private readonly ICurrentTenant _currentTenant; - - - public DataDictionaryManagementDataSeedContributor( - IGuidGenerator guidGenerator, - ICurrentTenant currentTenant) - { - _guidGenerator = guidGenerator; - _currentTenant = currentTenant; - } - - public async Task SeedAsync(DataSeedContext context) - { - /* Instead of returning the Task.CompletedTask, you can insert your test data - * at this point! - */ - await Task.CompletedTask; - } - } -} \ No newline at end of file diff --git a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementTestConsts.cs b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementTestConsts.cs index aa2e0f37..41fc3b3f 100644 --- a/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementTestConsts.cs +++ b/aspnet-core/modules/DataDictionaryManagement/test/Lion.AbpPro.DataDictionaryManagement.TestBase/DataDictionaryManagementTestConsts.cs @@ -2,6 +2,6 @@ namespace Lion.AbpPro.DataDictionaryManagement { public class DataDictionaryManagementTestConsts { - + public static Guid SeedDataDictionaryId = new Guid("39fdb236-a90e-e4b5-02a0-2866a8cf9821"); } } \ No newline at end of file diff --git a/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20220702015410_Init.Designer.cs b/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20230315062459_Init.Designer.cs similarity index 93% rename from aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20220702015410_Init.Designer.cs rename to aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20230315062459_Init.Designer.cs index f40f3f56..e265789c 100644 --- a/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20220702015410_Init.Designer.cs +++ b/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20230315062459_Init.Designer.cs @@ -12,15 +12,16 @@ using Volo.Abp.EntityFrameworkCore; namespace Lion.AbpPro.NotificationManagement.Migrations { [DbContext(typeof(NotificationManagementHttpApiHostMigrationsDbContext))] - [Migration("20220702015410_Init")] + [Migration("20230315062459_Init")] partial class Init { + /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) - .HasAnnotation("ProductVersion", "6.0.6") + .HasAnnotation("ProductVersion", "7.0.2") .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", b => @@ -74,6 +75,9 @@ namespace Lion.AbpPro.NotificationManagement.Migrations .HasColumnType("char(36)") .HasColumnName("LastModifierId"); + b.Property("MessageLevel") + .HasColumnType("int"); + b.Property("MessageType") .HasColumnType("int"); @@ -126,7 +130,7 @@ namespace Lion.AbpPro.NotificationManagement.Migrations .HasColumnType("char(36)") .HasColumnName("LastModifierId"); - b.Property("NotificationId") + b.Property("NotificationId") .HasColumnType("char(36)"); b.Property("Read") @@ -149,7 +153,9 @@ namespace Lion.AbpPro.NotificationManagement.Migrations { b.HasOne("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", null) .WithMany("NotificationSubscriptions") - .HasForeignKey("NotificationId"); + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", b => diff --git a/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20220702015410_Init.cs b/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20230315062459_Init.cs similarity index 93% rename from aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20220702015410_Init.cs rename to aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20230315062459_Init.cs index 109241c3..9fd7f511 100644 --- a/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20220702015410_Init.cs +++ b/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/20230315062459_Init.cs @@ -5,8 +5,10 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace Lion.AbpPro.NotificationManagement.Migrations { + /// public partial class Init : Migration { + /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() @@ -22,6 +24,7 @@ namespace Lion.AbpPro.NotificationManagement.Migrations Content = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), MessageType = table.Column(type: "int", nullable: false), + MessageLevel = table.Column(type: "int", nullable: false), SenderId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ExtraProperties = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), @@ -46,10 +49,10 @@ namespace Lion.AbpPro.NotificationManagement.Migrations columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + NotificationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ReceiveId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Read = table.Column(type: "tinyint(1)", nullable: false), ReadTime = table.Column(type: "datetime(6)", nullable: true), - NotificationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), CreationTime = table.Column(type: "datetime(6)", nullable: false), CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), LastModificationTime = table.Column(type: "datetime(6)", nullable: true), @@ -65,7 +68,8 @@ namespace Lion.AbpPro.NotificationManagement.Migrations name: "FK_NotificationSubscription_Notification_NotificationId", column: x => x.NotificationId, principalTable: "Notification", - principalColumn: "Id"); + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); @@ -75,6 +79,7 @@ namespace Lion.AbpPro.NotificationManagement.Migrations column: "NotificationId"); } + /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( diff --git a/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/NotificationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs b/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/NotificationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs index 0241fca1..e693043c 100644 --- a/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/NotificationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs +++ b/aspnet-core/modules/NotificationManagement/host/Lion.AbpPro.NotificationManagement.HttpApi.Host/Migrations/NotificationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs @@ -18,7 +18,7 @@ namespace Lion.AbpPro.NotificationManagement.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) - .HasAnnotation("ProductVersion", "6.0.6") + .HasAnnotation("ProductVersion", "7.0.2") .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", b => @@ -72,6 +72,9 @@ namespace Lion.AbpPro.NotificationManagement.Migrations .HasColumnType("char(36)") .HasColumnName("LastModifierId"); + b.Property("MessageLevel") + .HasColumnType("int"); + b.Property("MessageType") .HasColumnType("int"); @@ -124,7 +127,7 @@ namespace Lion.AbpPro.NotificationManagement.Migrations .HasColumnType("char(36)") .HasColumnName("LastModifierId"); - b.Property("NotificationId") + b.Property("NotificationId") .HasColumnType("char(36)"); b.Property("Read") @@ -147,7 +150,9 @@ namespace Lion.AbpPro.NotificationManagement.Migrations { b.HasOne("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", null) .WithMany("NotificationSubscriptions") - .HasForeignKey("NotificationId"); + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", b => diff --git a/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/Notification.cs b/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/Notification.cs index 7fc5b534..a32a1c79 100644 --- a/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/Notification.cs +++ b/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/Notification.cs @@ -114,7 +114,7 @@ namespace Lion.AbpPro.NotificationManagement.Notifications.Aggregates { if (NotificationSubscriptions.Any(e => e.ReceiveId == receiveId)) return; NotificationSubscriptions.Add( - new NotificationSubscription(notificationSubscriptionId, receiveId)); + new NotificationSubscription(notificationSubscriptionId, Id, receiveId)); } /// @@ -126,12 +126,10 @@ namespace Lion.AbpPro.NotificationManagement.Notifications.Aggregates { return; } - else - { - var temp = new NotificationSubscription(notificationSubscriptionId, receiveId); - temp.SetRead(readTime); - NotificationSubscriptions.Add(temp); - } + + var temp = new NotificationSubscription(notificationSubscriptionId, Id, receiveId); + temp.SetRead(readTime); + NotificationSubscriptions.Add(temp); } /// diff --git a/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/NotificationSubscription.cs b/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/NotificationSubscription.cs index 683f299f..a5fe7271 100644 --- a/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/NotificationSubscription.cs +++ b/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Domain/Notifications/Aggregates/NotificationSubscription.cs @@ -5,6 +5,11 @@ namespace Lion.AbpPro.NotificationManagement.Notifications.Aggregates /// public class NotificationSubscription : FullAuditedEntity { + /// + /// 消息Id + /// + public Guid NotificationId { get; set; } + /// /// 订阅人 /// @@ -27,15 +32,20 @@ namespace Lion.AbpPro.NotificationManagement.Notifications.Aggregates public NotificationSubscription( Guid id, + Guid notificationId, Guid receiveId ) : base(id) { + SetNotificationId(notificationId); SetReceiveId(receiveId); Read = false; ReadTime = null; } - + private void SetNotificationId(Guid notificationId) + { + NotificationId = notificationId; + } private void SetReceiveId(Guid receiveId) { ReceiveId = receiveId; diff --git a/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.EntityFrameworkCore/EntityFrameworkCore/NotificationManagementDbContextModelCreatingExtensions.cs b/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.EntityFrameworkCore/EntityFrameworkCore/NotificationManagementDbContextModelCreatingExtensions.cs index 394f132c..e3dab4cf 100644 --- a/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.EntityFrameworkCore/EntityFrameworkCore/NotificationManagementDbContextModelCreatingExtensions.cs +++ b/aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.EntityFrameworkCore/EntityFrameworkCore/NotificationManagementDbContextModelCreatingExtensions.cs @@ -9,15 +9,14 @@ namespace Lion.AbpPro.NotificationManagement.EntityFrameworkCore builder.Entity(b => { - b.ToTable(NotificationManagementDbProperties.DbTablePrefix + nameof(Notification), - NotificationManagementDbProperties.DbSchema); + b.ToTable(NotificationManagementDbProperties.DbTablePrefix + nameof(Notification),NotificationManagementDbProperties.DbSchema); + b.HasMany(e => e.NotificationSubscriptions).WithOne().HasForeignKey(uc => uc.NotificationId).IsRequired(); b.ConfigureByConvention(); }); builder.Entity(b => { - b.ToTable(NotificationManagementDbProperties.DbTablePrefix + nameof(NotificationSubscription), - NotificationManagementDbProperties.DbSchema); + b.ToTable(NotificationManagementDbProperties.DbTablePrefix + nameof(NotificationSubscription),NotificationManagementDbProperties.DbSchema); b.ConfigureByConvention(); }); } diff --git a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/wwwroot/images/xxx-job.png b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/wwwroot/images/xxx-job.png deleted file mode 100644 index 6658b8e8520d2769a69e2ba913f149c235d3bd4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25256 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

=r^c0~RiqcFtTmEmnoete&)O&? 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 diff --git a/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.Designer.cs b/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.Designer.cs new file mode 100644 index 00000000..c7e3c43e --- /dev/null +++ b/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.Designer.cs @@ -0,0 +1,1714 @@ +// +using System; +using Lion.AbpPro.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Lion.AbpPro.Migrations +{ + [DbContext(typeof(AbpProDbContext))] + [Migration("20230315062828_UpdateDataDictionaryManagementAndNotificationManagement")] + partial class UpdateDataDictionaryManagementAndNotificationManagement + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "7.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("DisplayText") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("DataDictionary", (string)null); + }); + + modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Code") + .HasColumnType("longtext"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DataDictionaryId") + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("DisplayText") + .HasColumnType("longtext"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Order") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DataDictionaryId"); + + b.ToTable("DataDictionaryDetail", (string)null); + }); + + modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("MessageLevel") + .HasColumnType("int"); + + b.Property("MessageType") + .HasColumnType("int"); + + b.Property("SenderId") + .HasColumnType("char(36)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.ToTable("Notification", (string)null); + }); + + modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.NotificationSubscription", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("NotificationId") + .HasColumnType("char(36)"); + + b.Property("Read") + .HasColumnType("tinyint(1)"); + + b.Property("ReadTime") + .HasColumnType("datetime(6)"); + + b.Property("ReceiveId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.ToTable("NotificationSubscription", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("longtext"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("char(36)") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("char(36)") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("char(36)") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("AuditLogId") + .HasColumnType("char(36)") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime(6)") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("AuditLogId") + .HasColumnType("char(36)") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime(6)") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint unsigned") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("char(36)"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("EntityChangeId") + .HasColumnType("char(36)"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("longtext"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime(6)"); + + b.Property("NextTryTime") + .HasColumnType("datetime(6)"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint unsigned") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("tinyint(1)"); + + b.Property("IsVisibleToClients") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("varchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("SourceTenantId") + .HasColumnType("char(36)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("TargetTenantId") + .HasColumnType("char(36)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("varchar(196)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("varchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint unsigned"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("varchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionaryDetail", b => + { + b.HasOne("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", null) + .WithMany("Details") + .HasForeignKey("DataDictionaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.NotificationSubscription", b => + { + b.HasOne("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", null) + .WithMany("NotificationSubscriptions") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates.DataDictionary", b => + { + b.Navigation("Details"); + }); + + modelBuilder.Entity("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", b => + { + b.Navigation("NotificationSubscriptions"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.cs b/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.cs new file mode 100644 index 00000000..33b608d1 --- /dev/null +++ b/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/20230315062828_UpdateDataDictionaryManagementAndNotificationManagement.cs @@ -0,0 +1,64 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Lion.AbpPro.Migrations +{ + /// + public partial class UpdateDataDictionaryManagementAndNotificationManagement : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_NotificationSubscription_Notification_NotificationId", + table: "NotificationSubscription"); + + migrationBuilder.AlterColumn( + name: "NotificationId", + table: "NotificationSubscription", + type: "char(36)", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), + collation: "ascii_general_ci", + oldClrType: typeof(Guid), + oldType: "char(36)", + oldNullable: true) + .OldAnnotation("Relational:Collation", "ascii_general_ci"); + + migrationBuilder.AddForeignKey( + name: "FK_NotificationSubscription_Notification_NotificationId", + table: "NotificationSubscription", + column: "NotificationId", + principalTable: "Notification", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_NotificationSubscription_Notification_NotificationId", + table: "NotificationSubscription"); + + migrationBuilder.AlterColumn( + name: "NotificationId", + table: "NotificationSubscription", + type: "char(36)", + nullable: true, + collation: "ascii_general_ci", + oldClrType: typeof(Guid), + oldType: "char(36)") + .OldAnnotation("Relational:Collation", "ascii_general_ci"); + + migrationBuilder.AddForeignKey( + name: "FK_NotificationSubscription_Notification_NotificationId", + table: "NotificationSubscription", + column: "NotificationId", + principalTable: "Notification", + principalColumn: "Id"); + } + } +} diff --git a/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/AbpProDbContextModelSnapshot.cs b/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/AbpProDbContextModelSnapshot.cs index 79218f50..7373bbbd 100644 --- a/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/AbpProDbContextModelSnapshot.cs +++ b/aspnet-core/services/src/Lion.AbpPro.EntityFrameworkCore/Migrations/AbpProDbContextModelSnapshot.cs @@ -240,7 +240,7 @@ namespace Lion.AbpPro.Migrations .HasColumnType("char(36)") .HasColumnName("LastModifierId"); - b.Property("NotificationId") + b.Property("NotificationId") .HasColumnType("char(36)"); b.Property("Read") @@ -1527,7 +1527,9 @@ namespace Lion.AbpPro.Migrations { b.HasOne("Lion.AbpPro.NotificationManagement.Notifications.Aggregates.Notification", null) .WithMany("NotificationSubscriptions") - .HasForeignKey("NotificationId"); + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => diff --git a/aspnet-core/shared/Lion.AbpPro.Shared.Hosting.Microservices/Lion/AbpPro/SharedHostingMicroserviceModule.cs b/aspnet-core/shared/Lion.AbpPro.Shared.Hosting.Microservices/Lion/AbpPro/SharedHostingMicroserviceModule.cs index e012e0d3..6b8d4b9b 100644 --- a/aspnet-core/shared/Lion.AbpPro.Shared.Hosting.Microservices/Lion/AbpPro/SharedHostingMicroserviceModule.cs +++ b/aspnet-core/shared/Lion.AbpPro.Shared.Hosting.Microservices/Lion/AbpPro/SharedHostingMicroserviceModule.cs @@ -48,8 +48,7 @@ public class SharedHostingMicroserviceModule : AbpModule Configure(options => { options.AutoValidate = false; }); } - private void ConfigureConsul(ServiceConfigurationContext context, - IConfiguration configuration) + private void ConfigureConsul(ServiceConfigurationContext context,IConfiguration configuration) { if (configuration.GetValue("Consul:Enabled", false)) { @@ -115,7 +114,6 @@ public class SharedHostingMicroserviceModule : AbpModule ///

/// 健康检查 /// - /// private void ConfigureHealthChecks(ServiceConfigurationContext context) { // TODO 检查数据库和redis是否正常 AspNetCore.HealthChecks.Redis AspNetCore.HealthChecks.MySql