1,源码
1 namespace Abp.Zero.EntityFramework
2 {
3 ///
4 /// Extension methods for .
5 ///
6 public static class AbpZeroDbModelBuilderExtensions
7 {
8 ///
9 /// Changes prefix for ABP tables (which is "Abp" by default).
10 /// Can be null/empty string to clear the prefix.
11 ///
12 /// The type of the tenant entity.
13 /// The type of the role entity.
14 /// The type of the user entity.
15 /// Model builder.
16 /// Table prefix, or null to clear prefix.
17 /// Schema name
18 public static void ChangeAbpTablePrefix(this DbModelBuilder modelBuilder, string prefix, string schemaName = null)
19 where TTenant : AbpTenant
20 where TRole : AbpRole
21 where TUser : AbpUser
22 {
23 prefix = prefix ?? "";
24
25 SetTableName(modelBuilder, prefix + "AuditLogs", schemaName);
26 SetTableName(modelBuilder, prefix + "BackgroundJobs", schemaName);
27 SetTableName(modelBuilder, prefix + "Editions", schemaName);
28 SetTableName(modelBuilder, prefix + "Features", schemaName);
29 SetTableName(modelBuilder, prefix + "Features", schemaName);
30 SetTableName(modelBuilder, prefix + "Features", schemaName);
31 SetTableName(modelBuilder, prefix + "Languages", schemaName);
32 SetTableName(modelBuilder, prefix + "LanguageTexts", schemaName);
33 SetTableName(modelBuilder, prefix + "Notifications", schemaName);
34 SetTableName(modelBuilder, prefix + "NotificationSubscriptions", schemaName);
35 SetTableName(modelBuilder, prefix + "OrganizationUnits", schemaName);
36 SetTableName(modelBuilder, prefix + "Permissions", schemaName);
37 SetTableName(modelBuilder, prefix + "Permissions", schemaName);
38 SetTableName(modelBuilder, prefix + "Permissions", schemaName);
39 SetTableName(modelBuilder, prefix + "Roles", schemaName);
40 SetTableName(modelBuilder, prefix + "Settings", schemaName);
41 SetTableName(modelBuilder, prefix + "Tenants", schemaName);
42 SetTableName(modelBuilder, prefix + "UserLogins", schemaName);
43 SetTableName(modelBuilder, prefix + "UserLoginAttempts", schemaName);
44 SetTableName(modelBuilder, prefix + "TenantNotifications", schemaName);
45 SetTableName(modelBuilder, prefix + "UserNotifications", schemaName);
46 SetTableName(modelBuilder, prefix + "UserOrganizationUnits", schemaName);
47 SetTableName(modelBuilder, prefix + "UserRoles", schemaName);
48 SetTableName(modelBuilder, prefix + "Users", schemaName);
49 SetTableName(modelBuilder, prefix + "UserAccounts", schemaName);
50 SetTableName(modelBuilder, prefix + "UserClaims", schemaName);
51 SetTableName(modelBuilder, prefix + "RoleClaims", schemaName);
52 SetTableName(modelBuilder, prefix + "UserTokens", schemaName);
53 }
54
55 internal static void SetTableName(this DbModelBuilder modelBuilder, string tableName, string schemaName)
56 where TEntity : class
57 {
58 if (schemaName == null)
59 {
60 modelBuilder.Entity().ToTable(tableName);
61 }
62 else
63 {
64 modelBuilder.Entity().ToTable(tableName, schemaName);
65 }
66 }
67 }
68 }
2,操作
public class WCHSOFTDbContext : AbpZeroDbContext
{
public WCHSOFTDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ChangeAbpTablePrefix("Wch");
base.OnModelCreating(modelBuilder);
}
}
3,效果
4,后记
本人最近正在研究Abp框架,发现官方给的demo和文档只是交大家怎么使用,有些功能文档中并没有写明,所以必须通过查看源码来找到自己问题的解决方法。大家在abp开发中有什么遇到的问题或者有什么建议,欢迎大家留言。