using Avalonia_EFCore.Models; using Microsoft.EntityFrameworkCore; namespace Avalonia_EFCore.Database { /// /// 应用数据库上下文 —— 继承自 Avalonia-EFCore 的 AppDbContext。 /// 所有业务实体在此注册 DbSet。 /// 这是 Avalonia-API 和 Avalonia-PC 共用的具体数据上下文。 /// public class AppDataContext(DatabaseConfiguration dbConfig) : AppDbContext(dbConfig) { /// 天气预报数据 public DbSet WeatherForecasts => Set(); /// 用户数据 public DbSet Users => Set(); /// API refresh token 数据 public DbSet ApiRefreshTokens => Set(); /// /// 配置实体映射,包括主键、索引和属性约束。 /// /// 模型构建器。 protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk-weather-forecast"); entity.Property(e => e.Summary).HasMaxLength(200); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk-user"); entity.Property(e => e.Email).HasMaxLength(200); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk-api-refresh-token"); entity.HasIndex(e => e.TokenHash).IsUnique().HasDatabaseName("idx-api-refresh-token-hash"); entity.HasIndex(e => e.UserId).HasDatabaseName("idx-api-refresh-token-user-id"); }); } } }