You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

额外提醒

  1. 记得同步修改你的实体类,把原来对应int列的属性名改成GivenRating,保证EF Core模型和数据库结构一致
  2. 以后尽量避免用SQL保留关键字(比如intselectfrom这类)作为列名、表名,能减少很多不必要的麻烦

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

火山引擎 最新活动