ABP框架源码学习之修改默认数据库表前缀或表名称

ABP框架源码学习之修改默认数据库表前缀或表名称

1,源码

1 1 namespace Abp.Zero.EntityFramework 2 2 { 3 3 /// <summary> 4 4 /// Extension methods for <see cref="DbModelBuilder"/>. 5 5 /// </summary> 6 6 public static class AbpZeroDbModelBuilderExtensions 7 7 { 8 8 /// <summary> 9 9 /// Changes prefix for ABP tables (which is "Abp" by default). 1010 /// Can be null/empty string to clear the prefix. 1111 /// </summary> 1212 /// <typeparam name="TTenant">The type of the tenant entity.</typeparam> 1313 /// <typeparam name="TRole">The type of the role entity.</typeparam> 1414 /// <typeparam name="TUser">The type of the user entity.</typeparam> 1515 /// <param name="modelBuilder">Model builder.</param> 1616 /// <param name="prefix">Table prefix, or null to clear prefix.</param> 1717 /// <param name="schemaName">Schema name</param> 1818 public static void ChangeAbpTablePrefix<TTenant, TRole, TUser>(this DbModelBuilder modelBuilder, string prefix, string schemaName = null) 1919 where TTenant : AbpTenant<TUser> 2020 where TRole : AbpRole<TUser> 2121 where TUser : AbpUser<TUser> 2222 { 2323 prefix = prefix ?? ""; 2424 2525 SetTableName<AuditLog>(modelBuilder, prefix + "AuditLogs", schemaName); 2626 SetTableName<BackgroundJobInfo>(modelBuilder, prefix + "BackgroundJobs", schemaName); 2727 SetTableName<Edition>(modelBuilder, prefix + "Editions", schemaName); 2828 SetTableName<FeatureSetting>(modelBuilder, prefix + "Features", schemaName); 2929 SetTableName<TenantFeatureSetting>(modelBuilder, prefix + "Features", schemaName); 3030 SetTableName<EditionFeatureSetting>(modelBuilder, prefix + "Features", schemaName); 3131 SetTableName<ApplicationLanguage>(modelBuilder, prefix + "Languages", schemaName); 3232 SetTableName<ApplicationLanguageText>(modelBuilder, prefix + "LanguageTexts", schemaName); 3333 SetTableName<NotificationInfo>(modelBuilder, prefix + "Notifications", schemaName); 3434 SetTableName<NotificationSubscriptionInfo>(modelBuilder, prefix + "NotificationSubscriptions", schemaName); 3535 SetTableName<OrganizationUnit>(modelBuilder, prefix + "OrganizationUnits", schemaName); 3636 SetTableName<PermissionSetting>(modelBuilder, prefix + "Permissions", schemaName); 3737 SetTableName<RolePermissionSetting>(modelBuilder, prefix + "Permissions", schemaName); 3838 SetTableName<UserPermissionSetting>(modelBuilder, prefix + "Permissions", schemaName); 3939 SetTableName<TRole>(modelBuilder, prefix + "Roles", schemaName); 4040 SetTableName<Setting>(modelBuilder, prefix + "Settings", schemaName); 4141 SetTableName<TTenant>(modelBuilder, prefix + "Tenants", schemaName); 4242 SetTableName<UserLogin>(modelBuilder, prefix + "UserLogins", schemaName); 4343 SetTableName<UserLoginAttempt>(modelBuilder, prefix + "UserLoginAttempts", schemaName); 4444 SetTableName<TenantNotificationInfo>(modelBuilder, prefix + "TenantNotifications", schemaName); 4545 SetTableName<UserNotificationInfo>(modelBuilder, prefix + "UserNotifications", schemaName); 4646 SetTableName<UserOrganizationUnit>(modelBuilder, prefix + "UserOrganizationUnits", schemaName); 4747 SetTableName<UserRole>(modelBuilder, prefix + "UserRoles", schemaName); 4848 SetTableName<TUser>(modelBuilder, prefix + "Users", schemaName); 4949 SetTableName<UserAccount>(modelBuilder, prefix + "UserAccounts", schemaName); 5050 SetTableName<UserClaim>(modelBuilder, prefix + "UserClaims", schemaName); 5151 SetTableName<RoleClaim>(modelBuilder, prefix + "RoleClaims", schemaName); 5252 SetTableName<UserToken>(modelBuilder, prefix + "UserTokens", schemaName); 5353 } 5454 5555 internal static void SetTableName<TEntity>(this DbModelBuilder modelBuilder, string tableName, string schemaName) 5656 where TEntity : class 5757 { 5858 if (schemaName == null) 5959 { 6060 modelBuilder.Entity<TEntity>().ToTable(tableName); 6161 } 6262 else 6363 { 6464 modelBuilder.Entity<TEntity>().ToTable(tableName, schemaName); 6565 } 6666 } 6767 } 6868 }

2,操作

1public class WCHSOFTDbContext : AbpZeroDbContext<Tenant, Role, User, WCHSOFTDbContext> 2{ 3  public WCHSOFTDbContext(DbContextOptions<WCHSOFTDbContext> options) 4   : base(options) 5 { 6 } 7 protected override void OnModelCreating(ModelBuilder modelBuilder) 8 { 9   modelBuilder.ChangeAbpTablePrefix<Tenant, Role, User>("Wch"); 10   base.OnModelCreating(modelBuilder); 11 } 12}

3,效果

 4,后记

  本人最近正在研究Abp框架,发现官方给的demo和文档只是交大家怎么使用,有些功能文档中并没有写明,所以必须通过查看源码来找到自己问题的解决方法。大家在abp开发中有什么遇到的问题或者有什么建议,欢迎大家留言。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o