EF Core 2.0使用Migrations重命名列时出现错误求助
解决EF Core 2.0迁移重命名列时的关键字冲突问题
嘿,我一眼就瞅出问题啦——你要重命名的旧列名int是SQL的保留关键字,直接在迁移脚本里这么写,SQL引擎会把它当成数据类型解析,自然会报错!
解决方案:给关键字列名加转义符
针对SQL Server,我们需要用方括号[]把关键字列名包裹起来,修改你的迁移脚本如下:
修改后的Up方法
protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.RenameColumn( name: "[int]", schema: "Gamgoo.More", table: "Rating", newName: "GivenRating"); }
修改后的Down方法
protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.RenameColumn( name: "GivenRating", schema: "Gamgoo.More", table: "Rating", newName: "[int]"); }
执行迁移命令
修改完脚本后,执行对应的命令就能把变更同步到数据库了:
- 程序包管理器控制台:
Update-Database - PowerShell/.NET CLI:
dotnet ef database update
额外提醒
- 记得同步修改你的实体类,把原来对应
int列的属性名改成GivenRating,保证EF Core模型和数据库结构一致 - 以后尽量避免用SQL保留关键字(比如
int、select、from这类)作为列名、表名,能减少很多不必要的麻烦
内容的提问来源于stack exchange,提问作者user7100073




