diff --git a/Directory.Build.targets b/Directory.Build.targets
index f3dd2d9..e90b41e 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -34,11 +34,12 @@
-
-
-
-
-
+
+
+
+
+
+
diff --git a/host/JiShe.IoT.HttpApi.Host/configs/appsettings.Development.json b/host/JiShe.IoT.HttpApi.Host/configs/appsettings.Development.json
index f91c8cd..8f19397 100644
--- a/host/JiShe.IoT.HttpApi.Host/configs/appsettings.Development.json
+++ b/host/JiShe.IoT.HttpApi.Host/configs/appsettings.Development.json
@@ -4,7 +4,8 @@
"CorsOrigins": "https://*.IoT.com,http://localhost:4200,http://localhost:3100,http://localhost:80,http://10.10.90.3:4200"
},
"ConnectionStrings": {
- "Default": "Data Source=192.168.111.174;Port=13306;Database=JiSheIoTProDB386;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;"
+ //"Default": "Data Source=192.168.111.174;Port=13306;Database=JiSheIoTProDB386;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;"
+ "Default": "Host=192.168.111.174;Port=5432;Database=jisheiotprodb;Username=postgres;Password=JiShe!aqG#5kGgh&0;Encoding=UTF8;Pooling=true;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=100;"
},
"Hangfire": {
"Redis": {
diff --git a/src/JiShe.IoT.Application/CommonServices/CommonService.cs b/src/JiShe.IoT.Application/CommonServices/CommonService.cs
index cb0c906..b82b50a 100644
--- a/src/JiShe.IoT.Application/CommonServices/CommonService.cs
+++ b/src/JiShe.IoT.Application/CommonServices/CommonService.cs
@@ -4,6 +4,7 @@ using JiShe.ServicePro.Core;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
+using System.Reflection;
using static FreeSql.Internal.GlobalFilter;
namespace JiShe.IoT.CommonServices
@@ -19,7 +20,45 @@ namespace JiShe.IoT.CommonServices
public void InitSelectTypetList()
{
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
- var typeList = assemblies.SelectMany(x => x.GetTypes()).Where(x => x.IsDefined(typeof(SelectResultAttribute), false));
+
+ // 排除 Npgsql 和系统程序集
+ var excludedAssemblies = new[]
+ {
+ "Npgsql",
+ "Npgsql.EntityFrameworkCore.PostgreSQL"
+ };
+
+ var typeList = assemblies
+ .Where(assembly =>
+ {
+ var assemblyName = assembly.GetName().Name ?? "";
+ // 排除 Npgsql 相关程序集
+ return !excludedAssemblies.Any(excluded =>
+ assemblyName.StartsWith(excluded, StringComparison.OrdinalIgnoreCase));
+ })
+ .SelectMany(assembly =>
+ {
+ try
+ {
+ return assembly.GetTypes();
+ }
+ catch (ReflectionTypeLoadException ex)
+ {
+ // 某些类型加载失败,只返回成功加载的类型
+ return ex.Types.Where(t => t != null);
+ }
+ catch (TypeLoadException)
+ {
+ // 类型加载异常,跳过这个程序集
+ return Enumerable.Empty();
+ }
+ catch (Exception)
+ {
+ // 其他异常,跳过这个程序集
+ return Enumerable.Empty();
+ }
+ })
+ .Where(t => t != null && t.IsDefined(typeof(SelectResultAttribute), false));
foreach (var typeInfoItem in typeList)
{
diff --git a/src/JiShe.IoT.DbMigrator/appsettings.json b/src/JiShe.IoT.DbMigrator/appsettings.json
index 557c7c1..7a3fa0c 100644
--- a/src/JiShe.IoT.DbMigrator/appsettings.json
+++ b/src/JiShe.IoT.DbMigrator/appsettings.json
@@ -1,6 +1,7 @@
{
"ConnectionStrings": {
- "Default": "Data Source=192.168.111.174;Port=13306;Database=JiSheIoTProDB386;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;"
+ //"Default": "Data Source=192.168.111.174;Port=13306;Database=JiSheIoTProDB386;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;"
+ "Default": "Host=192.168.111.174;Port=5432;Database=jisheiotprodb;Username=postgres;Password=JiShe!aqG#5kGgh&0;Encoding=UTF8;Pooling=true;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=100;"
},
"IoTDBOptions": {
"UserName": "root",
diff --git a/src/JiShe.IoT.Domain/BasicEntiy.cs b/src/JiShe.IoT.Domain/BasicEntiy.cs
index ac949f0..4e94827 100644
--- a/src/JiShe.IoT.Domain/BasicEntiy.cs
+++ b/src/JiShe.IoT.Domain/BasicEntiy.cs
@@ -49,7 +49,7 @@ namespace JiShe.IoT.Domain.Shared
/// 扩展属性,用于存储自定义字段,JSON格式
///
[Comment("扩展属性,用于存储自定义字段,JSON格式")]
- [JsonMap]
+ [JsonMap, Column(DbType = "jsonb")]
public new ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
diff --git a/src/JiShe.IoT.Domain/Data/IoTDbMigrationService.cs b/src/JiShe.IoT.Domain/Data/IoTDbMigrationService.cs
index 98f84da..953c8d5 100644
--- a/src/JiShe.IoT.Domain/Data/IoTDbMigrationService.cs
+++ b/src/JiShe.IoT.Domain/Data/IoTDbMigrationService.cs
@@ -42,7 +42,7 @@ namespace JiShe.IoT.Data
await MigrateDatabaseSchemaAsync();
await SeedDataAsync();
- await InitIoTDBTable();
+ //await InitIoTDBTable();
Logger.LogInformation($"Successfully completed host database migrations.");
diff --git a/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTEntityFrameworkCoreModule.cs b/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTEntityFrameworkCoreModule.cs
index 58b3cf7..da4ba4d 100644
--- a/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTEntityFrameworkCoreModule.cs
+++ b/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTEntityFrameworkCoreModule.cs
@@ -1,16 +1,18 @@
-using JiShe.ServicePro.CTWingManagement.EntityFrameworkCore;
+using JiShe.ServicePro.CTWingManagement.EntityFrameworkCore;
using JiShe.ServicePro.DeviceManagement.EntityFrameworkCore;
using JiShe.ServicePro.DynamicMenuManagement.EntityFrameworkCore;
using JiShe.ServicePro.FileManagement.EntityFrameworkCore;
using JiShe.ServicePro.OneNETManagement.EntityFrameworkCore;
using JiShe.ServicePro.TemplateManagement.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.PostgreSql;
using Volo.Abp.Guids;
+using Volo.Abp.Timing;
namespace JiShe.IoT.EntityFrameworkCore
{
[DependsOn(
typeof(IoTDomainModule),
- typeof(AbpEntityFrameworkCoreMySQLPomeloModule),
+ typeof(AbpEntityFrameworkCorePostgreSqlModule),
typeof(BasicManagementEntityFrameworkCoreModule),
typeof(DataDictionaryManagementEntityFrameworkCoreModule),
typeof(NotificationManagementEntityFrameworkCoreModule),
@@ -27,10 +29,19 @@ namespace JiShe.IoT.EntityFrameworkCore
public override void PreConfigureServices(ServiceConfigurationContext context)
{
IoTEfCoreEntityExtensionMappings.Configure();
+
+ // ✅ 启用 Npgsql 旧版时间戳行为
+ AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
+ // ✅ 配置 ABP 使用 UTC 时间
+ Configure(options =>
+ {
+ options.Kind = DateTimeKind.Utc;
+ });
+
context.Services.AddAbpDbContext(options =>
{
/* Remove "includeAllEntities: true" to create
@@ -47,7 +58,7 @@ namespace JiShe.IoT.EntityFrameworkCore
* See also HayoonKoreaDbContextFactory for EF Core tooling.
* https://github.com/abpframework/abp/issues/21879
* */
- options.UseMySQL(builder =>
+ options.UseNpgsql(builder =>
{
builder.TranslateParameterizedCollectionsToConstants();
});
diff --git a/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTMigrationsDbContextFactory.cs b/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTMigrationsDbContextFactory.cs
index b50a207..dc62996 100644
--- a/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTMigrationsDbContextFactory.cs
+++ b/src/JiShe.IoT.EntityFrameworkCore/EntityFrameworkCore/IoTMigrationsDbContextFactory.cs
@@ -11,9 +11,8 @@ namespace JiShe.IoT.EntityFrameworkCore
IoTEfCoreEntityExtensionMappings.Configure();
var configuration = BuildConfiguration();
- var serverVersion = new MySqlServerVersion(new Version(8, 4, 6));
var builder = new DbContextOptionsBuilder()
- .UseMySql(configuration.GetConnectionString("Default") , serverVersion);
+ .UseNpgsql(configuration.GetConnectionString("Default"));
return new IoTDbContext(builder.Options);
}
diff --git a/src/JiShe.IoT.EntityFrameworkCore/GlobalUsings.cs b/src/JiShe.IoT.EntityFrameworkCore/GlobalUsings.cs
index 3dbabfa..a66b245 100644
--- a/src/JiShe.IoT.EntityFrameworkCore/GlobalUsings.cs
+++ b/src/JiShe.IoT.EntityFrameworkCore/GlobalUsings.cs
@@ -30,7 +30,6 @@ global using Volo.Abp.BackgroundJobs;
global using Volo.Abp.Data;
global using Volo.Abp.DependencyInjection;
global using Volo.Abp.EntityFrameworkCore;
-global using Volo.Abp.EntityFrameworkCore.MySQL;
global using Volo.Abp.FeatureManagement;
global using Volo.Abp.Identity;
global using Volo.Abp.Modularity;
diff --git a/src/JiShe.IoT.EntityFrameworkCore/JiShe.IoT.EntityFrameworkCore.csproj b/src/JiShe.IoT.EntityFrameworkCore/JiShe.IoT.EntityFrameworkCore.csproj
index 84a1793..68639f5 100644
--- a/src/JiShe.IoT.EntityFrameworkCore/JiShe.IoT.EntityFrameworkCore.csproj
+++ b/src/JiShe.IoT.EntityFrameworkCore/JiShe.IoT.EntityFrameworkCore.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/JiShe.IoT.EntityFrameworkCore/Migrations/20260104061132_InitialCreate.cs b/src/JiShe.IoT.EntityFrameworkCore/Migrations/20260104061132_InitialCreate.cs
deleted file mode 100644
index 3f17e7e..0000000
--- a/src/JiShe.IoT.EntityFrameworkCore/Migrations/20260104061132_InitialCreate.cs
+++ /dev/null
@@ -1,2358 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace JiShe.IoT.Migrations
-{
- ///
- public partial class InitialCreate : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AlterDatabase()
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpAuditLogExcelFiles",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- FileName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- CreationTime = table.Column(type: "datetime(6)", nullable: false),
- CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpAuditLogExcelFiles", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpAuditLogs",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- ApplicationName = table.Column(type: "varchar(96)", maxLength: 96, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- UserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- TenantName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ImpersonatorUserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- ImpersonatorUserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ImpersonatorTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- ImpersonatorTenantName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExecutionTime = table.Column(type: "datetime(6)", nullable: false),
- ExecutionDuration = table.Column(type: "int", nullable: false),
- ClientIpAddress = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ClientName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ClientId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- CorrelationId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- BrowserInfo = table.Column(type: "varchar(512)", maxLength: 512, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- HttpMethod = table.Column(type: "varchar(16)", maxLength: 16, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Url = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Exceptions = table.Column(type: "longtext", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Comments = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- HttpStatusCode = table.Column(type: "int", nullable: true),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpAuditLogs", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpBackgroundJobs",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- ApplicationName = table.Column(type: "varchar(96)", maxLength: 96, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- JobName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- JobArgs = table.Column(type: "longtext", maxLength: 1048576, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TryCount = table.Column(type: "smallint", nullable: false, defaultValue: (short)0),
- CreationTime = table.Column(type: "datetime(6)", nullable: false),
- NextTryTime = table.Column(type: "datetime(6)", nullable: false),
- LastTryTime = table.Column(type: "datetime(6)", nullable: true),
- IsAbandoned = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- Priority = table.Column(type: "tinyint unsigned", nullable: false, defaultValue: (byte)15),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpBackgroundJobs", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpClaimTypes",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- Name = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Required = table.Column(type: "bit(1)", nullable: false),
- IsStatic = table.Column(type: "bit(1)", nullable: false),
- Regex = table.Column(type: "varchar(512)", maxLength: 512, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- RegexDescription = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Description = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ValueType = table.Column(type: "int", nullable: false),
- CreationTime = table.Column(type: "datetime(6)", nullable: false),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpClaimTypes", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpDataDictionaries",
- columns: table => new
- {
- 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: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpDataDictionaries", x => x.Id);
- },
- comment: "数据字典")
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpFeatureGroups",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DisplayName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExtraProperties = table.Column(type: "longtext", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpFeatureGroups", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpFeatures",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- GroupName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ParentName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DisplayName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Description = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DefaultValue = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- IsVisibleToClients = table.Column(type: "bit(1)", nullable: false),
- IsAvailableToHost = table.Column(type: "bit(1)", nullable: false),
- AllowedProviders = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ValueType = table.Column(type: "varchar(2048)", maxLength: 2048, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExtraProperties = table.Column(type: "longtext", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpFeatures", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpFeatureValues",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Value = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ProviderName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ProviderKey = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpFeatureValues", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpFileObjects",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- FileName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "文件名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- FileSize = table.Column(type: "bigint", nullable: false, comment: "文件大小"),
- ContentType = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "文件名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- Md5Hash = table.Column(type: "varchar(50)", maxLength: 50, nullable: false, comment: "文件MD5")
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpFileObjects", x => x.Id);
- },
- comment: "文件管理")
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpLanguages",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- CultureName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "语言名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- UiCultureName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "Ui语言名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- DisplayName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "显示名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- FlagIcon = table.Column(type: "varchar(128)", maxLength: 128, nullable: true, comment: "图标")
- .Annotation("MySql:CharSet", "utf8mb4"),
- IsEnabled = table.Column(type: "bit(1)", nullable: false),
- IsDefault = table.Column(type: "bit(1)", nullable: false),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpLanguages", x => x.Id);
- },
- comment: "语言管理")
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpLanguageTexts",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- CultureName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "语言名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- ResourceName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false, comment: "资源名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- Name = table.Column(type: "varchar(256)", maxLength: 256, nullable: false, comment: "名称")
- .Annotation("MySql:CharSet", "utf8mb4"),
- Value = table.Column(type: "varchar(256)", maxLength: 256, nullable: false, comment: "值")
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpLanguageTexts", x => x.Id);
- },
- comment: "语言文本管理")
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpLinkUsers",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- SourceUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- SourceTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- TargetUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TargetTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpLinkUsers", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpNotifications",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- Title = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- SenderUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- SenderUserName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ReceiveUserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- ReceiveUserName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Read = table.Column(type: "bit(1)", nullable: false),
- ReadTime = table.Column(type: "datetime(6)", nullable: true),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpNotifications", x => x.Id);
- },
- comment: "消息通知管理")
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpNotificationSubscriptions",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- NotificationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- ReceiveUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- ReceiveUserName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Read = table.Column(type: "bit(1)", nullable: false),
- ReadTime = table.Column(type: "datetime(6)", nullable: false),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpNotificationSubscriptions", x => x.Id);
- },
- comment: "消息订阅者")
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpOrganizationUnits",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- ParentId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- Code = table.Column(type: "varchar(95)", maxLength: 95, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DisplayName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- EntityVersion = table.Column(type: "int", nullable: false),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- 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),
- LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- IsDeleted = table.Column(type: "bit(1)", nullable: false, defaultValue: false),
- 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_AbpOrganizationUnits", x => x.Id);
- table.ForeignKey(
- name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId",
- column: x => x.ParentId,
- principalTable: "AbpOrganizationUnits",
- principalColumn: "Id");
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpPermissionGrants",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ProviderName = table.Column(type: "varchar(64)", maxLength: 64, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ProviderKey = table.Column(type: "varchar(64)", maxLength: 64, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpPermissionGroups",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DisplayName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExtraProperties = table.Column(type: "longtext", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpPermissionGroups", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpPermissions",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- GroupName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ParentName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DisplayName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- IsEnabled = table.Column(type: "bit(1)", nullable: false),
- MultiTenancySide = table.Column(type: "tinyint unsigned", nullable: false),
- Providers = table.Column(type: "varchar(128)", maxLength: 128, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- StateCheckers = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ExtraProperties = table.Column(type: "longtext", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpPermissions", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpRoles",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- Name = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- NormalizedName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- IsDefault = table.Column(type: "bit(1)", nullable: false),
- IsStatic = table.Column(type: "bit(1)", nullable: false),
- IsPublic = table.Column(type: "bit(1)", nullable: false),
- EntityVersion = table.Column(type: "int", nullable: false),
- CreationTime = table.Column(type: "datetime(6)", nullable: false),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpRoles", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpSecurityLogs",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- ApplicationName = table.Column(type: "varchar(96)", maxLength: 96, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Identity = table.Column(type: "varchar(96)", maxLength: 96, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Action = table.Column(type: "varchar(96)", maxLength: 96, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- UserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TenantName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ClientId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- CorrelationId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ClientIpAddress = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- BrowserInfo = table.Column(type: "varchar(512)", maxLength: 512, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- CreationTime = table.Column(type: "datetime(6)", nullable: false),
- ExtraProperties = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpSessions",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- SessionId = table.Column(type: "varchar(128)", maxLength: 128, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Device = table.Column(type: "varchar(64)", maxLength: 64, nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- DeviceInfo = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
- UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- ClientId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- IpAddresses = table.Column(type: "varchar(2048)", maxLength: 2048, nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4"),
- SignedIn = table.Column(type: "datetime(6)", nullable: false),
- LastAccessed = table.Column(type: "datetime(6)", nullable: true),
- ExtraProperties = table.Column(type: "longtext", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AbpSessions", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AbpSettingDefinitions",
- columns: table => new
- {
- Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
- Name = table.Column