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.
44 lines
2.8 KiB
44 lines
2.8 KiB
using Microsoft.EntityFrameworkCore;
|
|
using TeacherExt.Entities;
|
|
|
|
namespace TeacherExt.Data
|
|
{
|
|
public class TeacherDbContext : DbContext
|
|
{
|
|
public TeacherDbContext(DbContextOptions<TeacherDbContext> options) : base(options)
|
|
{
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
modelBuilder.Entity<Organ>().HasKey(o => o.Id);
|
|
modelBuilder.Entity<Organ>().Property(o => o.Name).IsRequired();
|
|
modelBuilder.Entity<Organ>().Property(o => o.Number).IsRequired();
|
|
modelBuilder.Entity<Organ>().HasIndex(o => o.Number).IsUnique();
|
|
modelBuilder.Entity<Organ>().HasOne(o => o.Parent).WithMany(o => o.Children).HasForeignKey(o=>o.ParentId).OnDelete(DeleteBehavior.SetNull);
|
|
modelBuilder.Entity<User>().HasKey(o => o.Id);
|
|
modelBuilder.Entity<User>().Property(o => o.UserName).IsRequired();
|
|
modelBuilder.Entity<User>().HasIndex(o => o.UserName).IsUnique();
|
|
modelBuilder.Entity<User>().HasOne(o => o.Organ).WithMany(o => o.Users).HasForeignKey(o => o.OrganId).OnDelete(DeleteBehavior.Cascade);
|
|
modelBuilder.Entity<Role>().HasKey(o => o.Id);
|
|
modelBuilder.Entity<Role>().Property(o => o.Name).IsRequired();
|
|
modelBuilder.Entity<Role>().HasIndex(o => o.Name).IsUnique();
|
|
modelBuilder.Entity<UserRole>().HasOne(o => o.User).WithMany(o => o.UserRoles).HasForeignKey(o => o.UserId).OnDelete(DeleteBehavior.Cascade);
|
|
modelBuilder.Entity<UserRole>().HasOne(o => o.Role).WithMany(o => o.UserRoles).HasForeignKey(o => o.RoleId).OnDelete(DeleteBehavior.Cascade);
|
|
modelBuilder.Entity<UserRole>().HasIndex(o => new { o.UserId, o.RoleId }).IsUnique();
|
|
modelBuilder.Entity<CheckLog>().HasKey(o => o.Id);
|
|
modelBuilder.Entity<Teacher>().HasKey(o => o.Id);
|
|
modelBuilder.Entity<Teacher>().Property(o => o.Id).ValueGeneratedNever();
|
|
modelBuilder.Entity<TeacherInfo>().HasIndex(o => o.Id);
|
|
modelBuilder.Entity<TeacherInfo>().Property(o => o.Id).ValueGeneratedNever();
|
|
modelBuilder.Entity<TeacherInfo>().HasOne(o => o.Teacher).WithOne(o => o.Info).HasForeignKey<TeacherInfo>(o=>o.TeacherId).OnDelete(DeleteBehavior.Cascade);
|
|
modelBuilder.Entity<TeacherProp>().HasKey(o => o.Id);
|
|
modelBuilder.Entity<TeacherProp>().Property(o => o.Id).ValueGeneratedNever();
|
|
modelBuilder.Entity<TeacherProp>().HasOne(o => o.Teacher).WithOne(o => o.Prop).HasForeignKey<TeacherProp>(o => o.TeacherId).OnDelete(DeleteBehavior.Cascade);
|
|
//
|
|
modelBuilder.Entity<Teacher>().HasOne(o => o.User).WithOne(o => o.Teacher).HasForeignKey<Teacher>(o => o.UserId).OnDelete(DeleteBehavior.Cascade);
|
|
}
|
|
}
|
|
}
|