using LMS.Repository.DB; using LMS.Repository.Models.DB; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using System.Text.Json; namespace LMS.DAO { public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext(DbContextOptions options) : base(options) { } //public DbSet Prompt { get; set; } //public DbSet PromptType { get; set; } public DbSet Permission { get; set; } public DbSet PermissionType { get; set; } public DbSet Machine { get; set; } public DbSet RefreshTokens { get; set; } public DbSet ApiEndpoints { get; set; } public DbSet RsaKeys { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .Property(a => a.RequiredPermissionIds) .HasConversion( v => string.IsNullOrEmpty(JsonSerializer.Serialize(v, (JsonSerializerOptions?)null)) ? "[]" // 如果序列化结果为空,则存储空数组 : JsonSerializer.Serialize(v, (JsonSerializerOptions?)null), v => string.IsNullOrEmpty(v) || v == "[]" ? new List() // 如果存储的是空字符串或空数组,则返回空列表 : JsonSerializer.Deserialize>(v, (JsonSerializerOptions?)null) ?? new List() ); } } }