You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF7指定目标迁移仍执行初始迁移,SQLite报错如何解决?

解决方法

步骤1:检查迁移历史表

打开你的SQLite数据库文件(可使用DB Browser for SQLite等工具),确认是否存在__EFMigrationsHistory表。如果该表不存在,或者表中缺少20230228105846_InitialMigration这条记录,说明EF无法追踪到初始迁移已执行,这就是问题根源。

步骤2:手动添加迁移历史记录

如果__EFMigrationsHistory表存在但缺少初始迁移记录,执行以下SQL语句插入记录:

INSERT INTO __EFMigrationsHistory (MigrationId, ProductVersion)
VALUES ('20230228105846_InitialMigration', '7.0.0');

注意:ProductVersion需替换为你实际使用的EF7版本号(比如7.0.12),可从错误栈的EF相关程序集版本信息中获取。

如果__EFMigrationsHistory表不存在,先执行创建表的语句:

CREATE TABLE __EFMigrationsHistory (
    MigrationId TEXT NOT NULL PRIMARY KEY,
    ProductVersion TEXT NOT NULL
);

再执行上述插入语句。

步骤3:重新执行目标迁移

完成历史记录添加后,再次运行命令:

Update-Database -Migration BookCoverFieldUpdate -StartUpProject Infrastructure

此时EF会识别初始迁移已执行,直接应用BookCoverFieldUpdate迁移。

备选方案:创建基线迁移

若上述方法无效,且数据库结构已与初始迁移完全一致,可创建基线迁移匹配当前状态:

  1. 确保数据库已包含初始迁移的所有表结构
  2. 运行命令创建空的初始迁移:
Add-Migration InitialMigration -IgnoreChanges -StartUpProject Infrastructure
  1. 执行更新命令让EF记录该迁移已应用:
Update-Database -StartUpProject Infrastructure

之后再尝试应用BookCoverFieldUpdate迁移。

额外注意事项

  • 确认DbContext的连接字符串指向正确的SQLite数据库文件
  • 若解决方案中有多个DbContext,需在命令中添加-Context参数指定对应上下文类,示例:
Update-Database -Migration BookCoverFieldUpdate -StartUpProject Infrastructure -Context YourDbContextName

内容的提问来源于stack exchange,提问作者JackFord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:21:27