using System.Data.Common; using System.Data.Entity; using System.Data.Entity.Core.Objects; using System.Data.Entity.Infrastructure; using Abp.EntityFramework; using Abp.Notifications; using IwbZero.Authorization.Base.Permissions; using IwbZero.Authorization.Base.SystemInfo; using IwbZero.Authorization.Base.Users; using IwbZero.Authorization.Roles; using IwbZero.Authorization.Users; namespace IwbZero.EntityFramework { public abstract class IwbZeroCommonDbContext : AbpDbContext where TRole : IwbSysRole where TUser : IwbSysUser { #region BaseSysInfo //public virtual IDbSet> SysAttachFiles { get; set; } //public virtual IDbSet> SysFunctions { get; set; } //public virtual IDbSet> SysHelps { get; set; } //public virtual IDbSet> SysStates { get; set; } public virtual IDbSet SysAppGuids { get; set; } public virtual IDbSet SysLogs { get; set; } public virtual IDbSet Settings { get; set; } #endregion /// /// Roles. /// public virtual IDbSet Roles { get; set; } /// /// Users. /// public virtual IDbSet Users { get; set; } /// /// User logins. /// public virtual IDbSet UserLogins { get; set; } /// /// User login attempts. /// public virtual IDbSet UserLoginAttempts { get; set; } /// /// User roles. /// public virtual IDbSet UserRoles { get; set; } /// /// User claims. /// public virtual IDbSet UserClaims { get; set; } /// /// Permissions. /// public virtual IDbSet Permissions { get; set; } public virtual IDbSet DataPermissions { get; set; } /// /// Notifications. /// public virtual IDbSet Notifications { get; set; } /// /// Tenant notifications. /// public virtual IDbSet TenantNotifications { get; set; } /// /// User notifications. /// public virtual IDbSet UserNotifications { get; set; } /// /// Notification subscriptions. /// public virtual IDbSet NotificationSubscriptions { get; set; } /// /// Default constructor. /// Do not directly instantiate this class. Instead, use dependency injection! /// protected IwbZeroCommonDbContext() { } /// /// Constructor with connection string parameter. /// /// Connection string or a name in connection strings in configuration file protected IwbZeroCommonDbContext(string nameOrConnectionString) : base(nameOrConnectionString) { } protected IwbZeroCommonDbContext(DbCompiledModel model) : base(model) { } /// /// This constructor can be used for unit tests. /// protected IwbZeroCommonDbContext(DbConnection existingConnection, bool contextOwnsConnection) : base(existingConnection, contextOwnsConnection) { } protected IwbZeroCommonDbContext(string nameOrConnectionString, DbCompiledModel model) : base(nameOrConnectionString, model) { } protected IwbZeroCommonDbContext(ObjectContext objectContext, bool dbContextOwnsObjectContext) : base(objectContext, dbContextOwnsObjectContext) { } /// /// Constructor. /// protected IwbZeroCommonDbContext(DbConnection existingConnection, DbCompiledModel model, bool contextOwnsConnection) : base(existingConnection, model, contextOwnsConnection) { } /// /// /// /// protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); var prefix = "Sys_"; SetTableName(modelBuilder, prefix + "Notifications"); SetTableName(modelBuilder, prefix + "NotificationSubscriptions"); SetTableName(modelBuilder, prefix + "NotificationTenants"); SetTableName(modelBuilder, prefix + "NotificationUsers"); modelBuilder.Entity() .HasIndex(e => new { e.TenantId, e.Name, e.UserId }) .IsUnique(); } private static void SetTableName(DbModelBuilder modelBuilder, string tableName) where TEntity : class { modelBuilder.Entity().ToTable(tableName); } } }