using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using System; using System.Globalization; using System.Linq; using Txgy.EWS.Server.Models; namespace Txgy.EWS.Server.EFCore { public class EFCoreContext : DbContext { private string strConn = string.Empty; public EFCoreContext() { /// 对于数据库结构的更新有用 /// 正式生产环境需要更新 //strConn = "Server=LAPTOP-EERSIA1O;Database=zx_sp;Trusted_Connection=True"; //strConn = "Server=LAPTOP-EERSIA1O;Database=zx_sp;Trusted_Connection=True"; // sql更新 } public EFCoreContext(string connectionStr) { strConn = connectionStr; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //optionsBuilder.UseSqlServer(strConn); optionsBuilder.UseSqlite(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 }); // 文件库中时间转换 string<->timespan ValueConverter timeValueConverter = new ValueConverter( v => (DateTime.ParseExact(v, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture).Ticks - 621355968000000000) / 10000000, v => new DateTime(v * 10000000 + 621355968000000000).ToString("yyyy-MM-dd HH:mm:ss")); modelBuilder.Entity().Property(p => p.UploadTime).HasConversion(timeValueConverter); // 菜单表中字体图标值转换 编号string<->字符string ValueConverter iconValueConverter = new ValueConverter( v => string.IsNullOrEmpty(v) ? null : ((int)v.ToArray()[0]).ToString("x"), v => v == null ? "" : ((char)int.Parse(v, NumberStyles.HexNumber)).ToString()); modelBuilder.Entity().Property(p => p.MenuIcon).HasConversion(iconValueConverter); // 出入记录的时间转换 modelBuilder.Entity().Property(p => p.EnterTime).HasConversion(timeValueConverter); modelBuilder.Entity().Property(p => p.LeaveTime).HasConversion(timeValueConverter); } public DbSet UpgradeFile { get; set; } public DbSet SysUserInfo { get; set; } public DbSet RoleInfo { get; set; } public DbSet MenuInfo { get; set; } public DbSet RoleMenu { get; set; } public DbSet UserRole { get; set; } public DbSet AutoColor { get; set; } public DbSet LicenseColor { get; set; } public DbSet FeeModel { get; set; } public DbSet AutoRegister { get; set; } // 20210315 public DbSet RecordInfo { get; set; } public DbSet BillingInfo { get; set; } } }