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.
iot/labs/Teacher/TeacherExt/Data/TeacherDbContext.cs

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);
}
}
}