namespace Database.Migrations; /// /// 数据库迁移工具 /// public class DatabaseMigrator { /// /// 执行数据库迁移SQL脚本 /// public static string GetMigrationScript() { return """ -- 数据库迁移:为TransactionCategory表添加IconKeywords字段 -- 检查IconKeywords字段是否已存在 -- 如果字段不存在,则添加 -- SQLite在尝试添加已存在的列时会报错,所以我们需要先检查 -- 由于SQLite不支持IF NOT EXISTS语法用于ALTER TABLE, -- 我们可以尝试执行并捕获错误 """; } /// /// 获取修改Icon字段长度的脚本 /// public static string GetIconFieldLengthMigrationScript() { return """ -- SQLite不支持直接修改字段长度 -- 对于现有数据,我们需要确保Icon字段可以存储Iconify标识符(通常50个字符以内) -- 如果Icon字段存储的是旧的SVG JSON数组,这些数据可能超过50字符 -- 需要的数据迁移逻辑在应用层处理: -- 1. 清空所有分类的Icon字段(因为旧数据格式不再兼容) -- 2. 重新通过IconSearchService为分类生成图标 """; } }