Visual Studio+SQL Server迁移报错:Products表CategoryId列重复
解决EF Core迁移提示“Products表中的CategoryId列被多次指定”问题
问题根源
你之前创建Products表时把CategoryId拼写成ctegoryId,修正后EF Core的迁移文件或模型元数据里残留了错误的列定义,导致迁移时试图同时创建两个重复列。
具体解决步骤
- 检查并清理迁移文件:找到Identity脚手架生成的最新迁移文件(比如
xxxx_AddIdentity.cs),搜索Products表的配置代码,删掉错误的ctegoryId列定义,只保留正确的CategoryId。 - 核对实体类配置:打开
Product实体类,确认没有重复定义CategoryId属性;再检查DbContext的OnModelCreating方法,确保没有同时配置错误拼写和正确拼写的列映射。 - 重置迁移(极端情况):
- 删除项目
Migrations文件夹下的所有迁移文件 - 打开Package Manager Console,执行
Remove-Migration清除未应用的迁移记录 - 执行
Add-Migration InitialCreate重新生成干净的初始迁移,确认其中仅包含正确的CategoryId列 - 最后执行
Update-Database完成数据库更新
- 删除项目
- 清理数据库残留列:如果数据库里已经存在错误的
ctegoryId列,先备份数据后手动删除该列,再重新执行迁移。
注意事项
以后修改实体属性后,生成迁移前务必核对模型结构,避免拼写错误遗留到迁移文件里。
内容的提问来源于stack exchange,提问作者Maki
相关产品推荐
相关产品推荐

