AgentSkillsCN

sql-schema

数据库架构师技能。当需要修改数据库结构、新增数据表,或进行数据初始化时,可选用此技能。本项目采用由 .NET Aspire 协调的 RAW SQL 脚本,而非 Entity Framework 迁移工具。

SKILL.md
--- frontmatter
name: sql-schema
description: Database Architect skill. Use this when you need to modify the database schema, add tables, or seed data. This project uses RAW SQL SCRIPTS orchestrated by .NET Aspire, NOT Entity Framework Migrations.

SQL Schema Management Skill

Overview

JJGNET Broadcasting uses a "Script-Load" pattern via .NET Aspire (JosephGuadagno.Broadcasting.AppHost) to initialize the SQL Server container. We DO NOT use dotnet ef migrations.

Source of Truth

The database schema is defined in scripts/.

Workflow

1. Identify the Change

Determine if you need a new table, a modified column, or new seed data.

2. Locate the Loading Logic

Check src/JosephGuadagno.Broadcasting.AppHost/AppHost.cs. Look for the sqlText concatenation logic:

csharp
var sqlText = string.Concat(
    File.ReadAllText(Path.Combine(path, @"../../scripts/create-database.sql")),
    " ",
    File.ReadAllText(Path.Combine(path, @"../../scripts/create-tables.sql")),
    // ... other files
);

3. Apply the Change

Option A: Modify Existing Files (Preferred for clean slate)

  • If adding a core table, add T-SQL to scripts/create-tables.sql.
  • If adding a view, use scripts/create-views.sql.

Option B: Create New Script (For specific updates)

  1. Create a new file, e.g., scripts/update-schema-features.sql.
  2. CRITICAL: You MUST update AppHost.cs to include this new file in the string.Concat list, or it will be ignored.

4. Writing SQL

  • Idempotency: Always write idempotent SQL. The script may run on container startup.
    sql
    IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'MyTable')
    BEGIN
        CREATE TABLE MyTable (...)
    END
    
  • Foreign Keys: Ensure referenced tables are created before the table defining the key (check file order in AppHost.cs).

5. Verification

  • Run dotnet run --project src/JosephGuadagno.Broadcasting.AppHost.
  • The container will spin up and execute the concatenated SQL script.

PROHIBITED ACTIONS

  • dotnet ef migrations add
  • dotnet ef database update
  • ❌ Modifying the DbContext OnModelCreating without adding corresponding SQL scripts.