Newer
Older
Sakayaki / Services / AppDbContext.cs
@fabre fabre on 20 Jan 1 KB 注释
using Microsoft.EntityFrameworkCore;
using Sakayaki.Models;

namespace Sakayaki.Services;

public sealed class AppDbContext : DbContext
{
    /// <summary>
    /// 初始化应用数据库上下文。
    /// </summary>
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }

    public DbSet<FanboxFolder> FanboxFolders => Set<FanboxFolder>();

    /// <summary>
    /// 配置模型映射与字段约束。
    /// </summary>
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // FanboxFolder 表结构与字段限制。
        var entity = modelBuilder.Entity<FanboxFolder>();
        entity.ToTable("FanboxFolders");
        entity.HasKey(x => x.Id);
        entity.Property(x => x.Id).ValueGeneratedOnAdd();
        entity.Property(x => x.CreatedAt).ValueGeneratedOnAdd();
        entity.Property(x => x.FolderName).HasMaxLength(255).IsRequired();
        entity.Property(x => x.Author).HasMaxLength(100).IsRequired();
        entity.Property(x => x.Date).HasColumnType("date").IsRequired();
        entity.Property(x => x.Title).HasMaxLength(255).IsRequired();
        entity.Property(x => x.Keywords).HasMaxLength(1024);
    }
}