using InSituLaboratory.Entities; using InSituLaboratory.Entities.ExperimentalStationEntities; using InSituLaboratory.Entities.SysData; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using System.Globalization; namespace InSituLaboratory.ORM { public class NoimptyDbContext : DbContext { public NoimptyDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) optionsBuilder.UseSqlite("Data Source=data.db "); } protected override void OnModelCreating(ModelBuilder modelBuilder) { // 联合主键 modelBuilder.Entity() .HasKey(pk => new { pk.RoleId, pk.MenuId }); modelBuilder.Entity() .HasKey(pk => new { pk.RoleId, pk.UserId }); //角色表的一对多关系 角色对用户 modelBuilder.Entity() .HasOne(u => u.SysRole) .WithMany(r => r.Users) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasOne(u => u.SysRole) .WithMany(r => r.Menus) .OnDelete(DeleteBehavior.Cascade); //用户对角色 modelBuilder.Entity() .HasOne(u => u.User) .WithMany(r => r.Roles); // 页面-》数据库的转换 // 数据库-》页面的转换 ValueConverter iconValueConverter = new ValueConverter( p2d => string.IsNullOrEmpty(p2d) ? null : ((int)p2d.ToArray()[0]).ToString("x"), d2p => d2p == null ? "" : ((char)int.Parse(d2p, NumberStyles.HexNumber)).ToString() ); modelBuilder.Entity() .Property(m => m.MenuIcon) .HasConversion(iconValueConverter); } public virtual DbSet SysUser { get; set; } public virtual DbSet SysMenu { get; set; } public virtual DbSet SysRole { get; set; } public virtual DbSet RoleMenu { get; set; } public virtual DbSet RoleUser { get; set; } public virtual DbSet cavityoperationstatus { get; set; } public virtual DbSet cavityenvironment { get; set; } public virtual DbSet cavityoutputfeedback { get; set; } public virtual DbSet cavityoutputstatus { get; set; } public virtual DbSet cavityoutputcurrent { get; set; } public virtual DbSet cavityenergyconversion { get; set; } public virtual DbSet cavitybatterylevel { get; set; } public virtual DbSet SysSequential { get; set; } public virtual DbSet SysSequentialDetails { get; set; } public virtual DbSet SysDevice { get; set; } public virtual DbSet SysSequentialTotal { get; set; } public virtual DbSet CurrentFaultyEquipment { get; set; } public virtual DbSet CurrentWorkEquipment { get; set; } public virtual DbSet SysStatus { get; set; } } }