using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using System.Globalization; using RIZO.Server.Models; namespace RIZO.Server.EFCore { public class EFCoreContext : DbContext { private string strConn = "Server=127.0.0.1;Database=zx_sp_record;User Id=sa;Password=123456;"; public EFCoreContext() { //strConn = "Server=LAPTOP-EERSIA1O;Database=zx_sp_record;Trusted_Connection=True"; } public EFCoreContext(string connectionStr) { this.strConn = connectionStr; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //optionsBuilder.UseSqlServer(strConn); // MySQL 配置(使用 Pomelo 提供程序) optionsBuilder.UseMySql(strConn, ServerVersion.AutoDetect(strConn)); } protected override void OnModelCreating(ModelBuilder modelBuilder) { // 联合主键设置 modelBuilder.Entity().HasKey(pk => new { pk.MenuId, pk.RoleId }); modelBuilder.Entity().HasKey(pk => new { pk.UserId, pk.RoleId }); // 菜单表中的字体图标值转换 ValueConverter iconValueConverter = new ValueConverter( v => string.IsNullOrEmpty(v) ? null : ((int)v.ToCharArray()[0]).ToString("x"), v => v == null ? "" : ((char)int.Parse(v, NumberStyles.HexNumber)).ToString()); modelBuilder.Entity().Property(p => p.MenuIcon).HasConversion(iconValueConverter); } public DbSet SysUserInfo { get; set; } public DbSet MenuInfo { get; set; } public DbSet RoleInfo { get; set; } public DbSet RoleMenu { get; set; } public DbSet UserRole { get; set; } } }