IwbZeroDbModelBuilderExtensions.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System.Data.Entity;
  2. using Abp.BackgroundJobs;
  3. using Abp.EntityHistory;
  4. using Abp.Notifications;
  5. using IwbZero.Authorization.Base.Permissions;
  6. using IwbZero.Authorization.Base.Roles;
  7. using IwbZero.Authorization.Base.SystemInfo;
  8. using IwbZero.Authorization.Base.Users;
  9. using IwbZero.Authorization.Roles;
  10. using IwbZero.Authorization.Users;
  11. using IwbZero.MultiTenancy;
  12. namespace IwbZero.EntityFramework
  13. {
  14. /// <summary>
  15. /// Extension methods for <see cref="DbModelBuilder"/>.
  16. /// </summary>
  17. public static class IwbZeroDbModelBuilderExtensions
  18. {
  19. /// <summary>
  20. /// Changes prefix for ABP tables (which is "Abp" by default).
  21. /// Can be null/empty string to clear the prefix.
  22. /// </summary>
  23. /// <typeparam name="TTenant">The type of the tenant entity.</typeparam>
  24. /// <typeparam name="TRole">The type of the role entity.</typeparam>
  25. /// <typeparam name="TUser">The type of the user entity.</typeparam>
  26. /// <param name="modelBuilder">Model builder.</param>
  27. /// <param name="prefix">Table prefix, or null to clear prefix.</param>
  28. /// <param name="schemaName">Schema name</param>
  29. public static void ChangeAbpTablePrefix<TTenant, TRole, TUser>(this DbModelBuilder modelBuilder, string prefix, string schemaName = null)
  30. where TTenant : IwbTenant<TUser>
  31. where TRole : IwbSysRole<TUser>
  32. where TUser : IwbSysUser<TUser>
  33. {
  34. prefix = prefix ?? "";
  35. SetTableName<SysLog>(modelBuilder, prefix + "AuditLogs", schemaName);
  36. SetTableName<BackgroundJobInfo>(modelBuilder, prefix + "BackgroundJobs", schemaName);
  37. //SetTableName<Edition>(modelBuilder, prefix + "Editions", schemaName);
  38. SetTableName<EntityChange>(modelBuilder, prefix + "EntityChanges", schemaName);
  39. SetTableName<EntityChangeSet>(modelBuilder, prefix + "EntityChangeSets", schemaName);
  40. SetTableName<EntityPropertyChange>(modelBuilder, prefix + "EntityPropertyChanges", schemaName);
  41. //SetTableName<FeatureSetting>(modelBuilder, prefix + "Features", schemaName);
  42. //SetTableName<TenantFeatureSetting>(modelBuilder, prefix + "Features", schemaName);
  43. //SetTableName<EditionFeatureSetting>(modelBuilder, prefix + "Features", schemaName);
  44. //SetTableName<ApplicationLanguage>(modelBuilder, prefix + "Languages", schemaName);
  45. //SetTableName<ApplicationLanguageText>(modelBuilder, prefix + "LanguageTexts", schemaName);
  46. SetTableName<NotificationInfo>(modelBuilder, prefix + "Notifications", schemaName);
  47. SetTableName<NotificationSubscriptionInfo>(modelBuilder, prefix + "NotificationSubscriptions", schemaName);
  48. //SetTableName<OrganizationUnit>(modelBuilder, prefix + "OrganizationUnits", schemaName);
  49. SetTableName<PermissionSetting>(modelBuilder, prefix + "Permissions", schemaName);
  50. SetTableName<TRole>(modelBuilder, prefix + "Roles", schemaName);
  51. SetTableName<SysSetting>(modelBuilder, prefix + "Settings", schemaName);
  52. SetTableName<TTenant>(modelBuilder, prefix + "Tenants", schemaName);
  53. SetTableName<UserLogin>(modelBuilder, prefix + "UserLogins", schemaName);
  54. SetTableName<UserLoginAttempt>(modelBuilder, prefix + "UserLoginAttempts", schemaName);
  55. SetTableName<TenantNotificationInfo>(modelBuilder, prefix + "TenantNotifications", schemaName);
  56. SetTableName<UserNotificationInfo>(modelBuilder, prefix + "UserNotifications", schemaName);
  57. //SetTableName<UserOrganizationUnit>(modelBuilder, prefix + "UserOrganizationUnits", schemaName);
  58. //SetTableName<OrganizationUnitRole>(modelBuilder, prefix + "OrganizationUnitRoles", schemaName);
  59. SetTableName<UserRole>(modelBuilder, prefix + "UserRoles", schemaName);
  60. SetTableName<TUser>(modelBuilder, prefix + "Users", schemaName);
  61. SetTableName<UserAccount>(modelBuilder, prefix + "UserAccounts", schemaName);
  62. SetTableName<UserClaim>(modelBuilder, prefix + "UserClaims", schemaName);
  63. SetTableName<RoleClaim>(modelBuilder, prefix + "RoleClaims", schemaName);
  64. }
  65. private static void SetTableName<TEntity>(DbModelBuilder modelBuilder, string tableName, string schemaName)
  66. where TEntity : class
  67. {
  68. if (schemaName == null)
  69. {
  70. modelBuilder.Entity<TEntity>().ToTable(tableName);
  71. }
  72. else
  73. {
  74. modelBuilder.Entity<TEntity>().ToTable(tableName, schemaName);
  75. }
  76. }
  77. }
  78. }