VzDbModelBuilderExtensions.cs 5.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Abp.BackgroundJobs;
  2. using Abp.Notifications;
  3. using Abp.Webhooks;
  4. using Microsoft.EntityFrameworkCore;
  5. using VberZero.BaseSystem;
  6. using VberZero.BaseSystem.MultiTenancy;
  7. using VberZero.BaseSystem.Organizations;
  8. using VberZero.BaseSystem.Roles;
  9. using VberZero.BaseSystem.Users;
  10. namespace VberZero.EntityFramework;
  11. /// <summary>
  12. /// Extension methods for <see cref="ModelBuilder"/>.
  13. /// </summary>
  14. public static class VzDbModelBuilderExtensions
  15. {
  16. /// <summary>
  17. /// 更改 系统 表的前缀(默认为“Sys_”)
  18. /// 可以为空/空字符串来清除前缀。
  19. /// </summary>
  20. /// <param name="modelBuilder">Model builder.</param>
  21. /// <param name="prefix">Table prefix, or null to clear prefix.</param>
  22. /// <param name="schemaName">Schema name</param>
  23. public static void ChangeTablePrefix(this ModelBuilder modelBuilder, string prefix = "Sys_", string schemaName = null)
  24. {
  25. prefix = prefix ?? "";
  26. SetTableName<AuditLog>(modelBuilder, prefix + "AuditLogs", schemaName);
  27. SetTableName<BackgroundJobInfo>(modelBuilder, prefix + "BackgroundJobs", schemaName);
  28. SetTableName<NotificationInfo>(modelBuilder, prefix + "Notifications", schemaName);
  29. SetTableName<NotificationSubscriptionInfo>(modelBuilder, prefix + "NotificationSubscriptions", schemaName);
  30. SetTableName<OrganizationUnit>(modelBuilder, prefix + "OrganizationUnits", schemaName);
  31. SetTableName<PermissionSetting>(modelBuilder, prefix + "Permissions", schemaName);
  32. SetTableName<RolePermissionSetting>(modelBuilder, prefix + "Permissions", schemaName);
  33. SetTableName<UserPermissionSetting>(modelBuilder, prefix + "Permissions", schemaName);
  34. SetTableName<Role>(modelBuilder, prefix + "Roles", schemaName);
  35. SetTableName<SysSetting>(modelBuilder, prefix + "Settings", schemaName);
  36. SetTableName<Tenant>(modelBuilder, prefix + "Tenants", schemaName);
  37. SetTableName<UserLogin>(modelBuilder, prefix + "UserLogins", schemaName);
  38. SetTableName<UserLoginAttempt>(modelBuilder, prefix + "UserLoginAttempts", schemaName);
  39. SetTableName<TenantNotificationInfo>(modelBuilder, prefix + "TenantNotifications", schemaName);
  40. SetTableName<UserNotificationInfo>(modelBuilder, prefix + "UserNotifications", schemaName);
  41. SetTableName<UserOrganizationUnit>(modelBuilder, prefix + "UserOrganizationUnits", schemaName);
  42. SetTableName<OrganizationUnitRole>(modelBuilder, prefix + "OrganizationUnitRoles", schemaName);
  43. SetTableName<UserRole>(modelBuilder, prefix + "UserRoles", schemaName);
  44. SetTableName<User>(modelBuilder, prefix + "Users", schemaName);
  45. SetTableName<UserAccount>(modelBuilder, prefix + "UserAccounts", schemaName);
  46. SetTableName<UserClaim>(modelBuilder, prefix + "UserClaims", schemaName);
  47. SetTableName<RoleClaim>(modelBuilder, prefix + "RoleClaims", schemaName);
  48. SetTableName<UserToken>(modelBuilder, prefix + "UserTokens", schemaName);
  49. SetTableName<WebhookEvent>(modelBuilder, prefix + "WebhookEvents", schemaName);
  50. SetTableName<WebhookSubscriptionInfo>(modelBuilder, prefix + "WebhookSubscriptions", schemaName);
  51. SetTableName<WebhookSendAttempt>(modelBuilder, prefix + "WebhookSendAttempts", schemaName);
  52. SetTableName<SysFunction>(modelBuilder, prefix + "Functions", schemaName);
  53. SetTableName<SysAttach>(modelBuilder, prefix + "Attaches", schemaName);
  54. SetTableName<SysAutoCompleteQuery>(modelBuilder, prefix + "AutoCompleteQueries", schemaName);
  55. SetTableName<SysCalendar>(modelBuilder, prefix + "Calendars", schemaName);
  56. SetTableName<SysHelp>(modelBuilder, prefix + "Helps", schemaName);
  57. SetTableName<SysState>(modelBuilder, prefix + "States", schemaName);
  58. //SetTableName<DynamicProperty>(modelBuilder, prefix + "DynamicProperties", schemaName);
  59. //SetTableName<DynamicPropertyValue>(modelBuilder, prefix + "DynamicPropertyValues", schemaName);
  60. //SetTableName<DynamicEntityProperty>(modelBuilder, prefix + "DynamicEntityProperties", schemaName);
  61. //SetTableName<DynamicEntityPropertyValue>(modelBuilder, prefix + "DynamicEntityPropertyValues", schemaName);
  62. //SetTableName<EntityChange>(modelBuilder, prefix + "EntityChanges", schemaName);
  63. //SetTableName<EntityChangeSet>(modelBuilder, prefix + "EntityChangeSets", schemaName);
  64. //SetTableName<EntityPropertyChange>(modelBuilder, prefix + "EntityPropertyChanges", schemaName);
  65. //SetTableName<Edition>(modelBuilder, prefix + "Editions", schemaName);
  66. //SetTableName<FeatureSetting>(modelBuilder, prefix + "Features", schemaName);
  67. //SetTableName<EditionFeatureSetting>(modelBuilder, prefix + "Features", schemaName);
  68. //SetTableName<TenantFeatureSetting>(modelBuilder, prefix + "Features", schemaName);
  69. //SetTableName<ApplicationLanguage>(modelBuilder, prefix + "Languages", schemaName);
  70. //SetTableName<ApplicationLanguageText>(modelBuilder, prefix + "LanguageTexts", schemaName);
  71. }
  72. internal static void SetTableName<TEntity>(this ModelBuilder modelBuilder, string tableName, string schemaName)
  73. where TEntity : class
  74. {
  75. if (schemaName == null)
  76. {
  77. modelBuilder.Entity<TEntity>().ToTable(tableName);
  78. }
  79. else
  80. {
  81. modelBuilder.Entity<TEntity>().ToTable(tableName, schemaName);
  82. }
  83. }
  84. }