LMS.service/LMS.DAO/ApplicationDbContext.cs

53 lines
1.9 KiB
C#
Raw Normal View History

2024-10-13 17:04:47 +08:00

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<User, Role, long>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
//public DbSet<Prompt> Prompt { get; set; }
//public DbSet<PromptType> PromptType { get; set; }
public DbSet<Permission> Permission { get; set; }
public DbSet<PermissionType> PermissionType { get; set; }
public DbSet<PromptType> PromptType { get; set; }
public DbSet<Prompt> Prompt { get; set; }
2024-10-13 17:04:47 +08:00
public DbSet<Machine> Machine { get; set; }
public DbSet<RefreshTokens> RefreshTokens { get; set; }
public DbSet<ApiEndpoints> ApiEndpoints { get; set; }
public DbSet<RsaKeys> RsaKeys { get; set; }
2024-10-18 12:44:12 +08:00
public DbSet<Options> Options { get; set; }
2024-10-13 17:04:47 +08:00
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApiEndpoints>()
.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<string>() // 如果存储的是空字符串或空数组,则返回空列表
: JsonSerializer.Deserialize<List<string>>(v, (JsonSerializerOptions?)null) ?? new List<string>()
);
}
}
}