You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.9 KiB

4 years ago
using System.Data.Entity;
namespace CK.SCP.Models.AppBoxEntity
{
public class AppBoxContext : DbContext
{
public AppBoxContext() : base(EntitiesFactory.GetEfConnectionString(GlobalConfig.AppBoxDatabase))
{
}
public AppBoxContext(string strConn) : base(strConn)
{
}
public DbSet<Config> Configs { get; set; }
public DbSet<Dept> Depts { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<Title> Titles { get; set; }
public DbSet<Online> Onlines { get; set; }
public DbSet<Log> Logs { get; set; }
public DbSet<Power> Powers { get; set; }
public DbSet<Menu> Menus { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Role>()
.HasMany(r => r.Users)
.WithMany(u => u.Roles)
.Map(x => x.ToTable("RoleUsers")
.MapLeftKey("RoleID")
.MapRightKey("UserID"));
modelBuilder.Entity<Title>()
.HasMany(t => t.Users)
.WithMany(u => u.Titles)
.Map(x => x.ToTable("TitleUsers")
.MapLeftKey("TitleID")
.MapRightKey("UserID"));
modelBuilder.Entity<Dept>()
.HasOptional(d => d.Parent)
.WithMany(d => d.Children)
.Map(x => x.MapKey("ParentID"));
modelBuilder.Entity<Dept>()
.HasMany(d => d.Users)
.WithOptional(u => u.Dept)
.Map(x => x.MapKey("DeptID"));
modelBuilder.Entity<Online>()
.HasRequired(o => o.User)
.WithMany()
.Map(x => x.MapKey("UserID"));
modelBuilder.Entity<Menu>()
.HasOptional(m => m.Parent)
.WithMany(m => m.Children)
.Map(x => x.MapKey("ParentID"));
//modelBuilder.Entity<Menu>()
// .HasOptional(m => m.Module)
// .WithMany()
// .Map(x => x.MapKey("ModuleID"));
//modelBuilder.Entity<Module>()
// .HasMany(m => m.ModulePowers)
// .WithRequired(mp => mp.Module);
//modelBuilder.Entity<Power>()
// .HasMany(p => p.ModulePowers)
// .WithRequired(mp => mp.Power);
modelBuilder.Entity<Menu>()
.HasOptional(m => m.ViewPower)
.WithMany()
.Map(x => x.MapKey("ViewPowerID"));
modelBuilder.Entity<Role>()
.HasMany(r => r.Powers)
.WithMany(p => p.Roles)
.Map(x => x.ToTable("RolePowers")
.MapLeftKey("RoleID")
.MapRightKey("PowerID"));
}
}
}