20230201_145_upperpc/InSituLaboratory.ORM/NoimptyDbContext.cs

84 lines
3.8 KiB
C#

using InSituLaboratory.Entities;
using InSituLaboratory.Entities.ExperimentalStationEntities;
using InSituLaboratory.Entities.Sensor;
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<NoimptyDbContext> 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<RoleMenu>()
.HasKey(pk => new { pk.RoleId, pk.MenuId });
modelBuilder.Entity<RoleUser>()
.HasKey(pk => new { pk.RoleId, pk.UserId });
//角色表的一对多关系 角色对用户
modelBuilder.Entity<RoleUser>()
.HasOne(u => u.SysRole)
.WithMany(r => r.Users)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<RoleMenu>()
.HasOne(u => u.SysRole)
.WithMany(r => r.Menus)
.OnDelete(DeleteBehavior.Cascade);
//用户对角色
modelBuilder.Entity<RoleUser>()
.HasOne(u => u.User)
.WithMany(r => r.Roles);
// 页面-》数据库的转换
// 数据库-》页面的转换
ValueConverter iconValueConverter =
new ValueConverter<string, string>(
p2d => string.IsNullOrEmpty(p2d) ? null : ((int)p2d.ToArray()[0]).ToString("x"),
d2p => d2p == null ? "" : ((char)int.Parse(d2p, NumberStyles.HexNumber)).ToString()
);
modelBuilder.Entity<SysMenu>()
.Property(m => m.MenuIcon)
.HasConversion(iconValueConverter);
}
public virtual DbSet<SysUser> SysUser { get; set; }
public virtual DbSet<SysMenu> SysMenu { get; set; }
public virtual DbSet<SysRole> SysRole { get; set; }
public virtual DbSet<RoleMenu> RoleMenu { get; set; }
public virtual DbSet<RoleUser> RoleUser { get; set; }
public virtual DbSet<cavityoperationstatus> cavityoperationstatus { get; set; }
public virtual DbSet<cavityenvironment> cavityenvironment { get; set; }
public virtual DbSet<cavityoutputfeedback> cavityoutputfeedback { get; set; }
public virtual DbSet<cavityoutputstatus> cavityoutputstatus { get; set; }
public virtual DbSet<cavityoutputcurrent> cavityoutputcurrent { get; set; }
public virtual DbSet<cavityenergyconversion> cavityenergyconversion { get; set; }
public virtual DbSet<cavitybatterylevel> cavitybatterylevel { get; set; }
public virtual DbSet<SysSequential> SysSequential { get; set; }
public virtual DbSet<SysSequentialDetails> SysSequentialDetails { get; set; }
public virtual DbSet<SysDevice> SysDevice { get; set; }
public virtual DbSet<SysSequentialTotal> SysSequentialTotal { get; set; }
public virtual DbSet<CurrentFaultyEquipment> CurrentFaultyEquipment { get; set; }
public virtual DbSet<CurrentWorkEquipment> CurrentWorkEquipment { get; set; }
public virtual DbSet<SysStatus> SysStatus { get; set; }
public virtual DbSet<MEMSSpModel> MEMSSpModel { get; set; }
public virtual DbSet<MEMSZpModel> MEMSZpModel { get; set; }
public virtual DbSet<ColorMSModel> ColorMSModel { get; set; }
public virtual DbSet<CH4IsotopeModel> CH4IsotopeModel { get; set; }
}
}