【发布时间】:2013-11-22 19:43:55
【问题描述】:
我需要将我的一个表上的主键的数据类型从 int 更改为字符串(我没有说我想...)。迁移会生成这段代码:
AlterColumn("dbo.Venues", "ID", c => c.String(nullable: false, maxLength: 128));
这会导致 SQL 服务器抱怨数据类型必须是 int、bigint 等,因为该列是标识列。我添加了以下内容,但似乎没有效果:
AlterColumn("dbo.Venues", "ID", c => c.Int(identity:false));
问题:如何进行迁移以将数据类型从 int 更改为 string?
以下可能与我的问题有关,但不一定: 迁移生成的唯一代码是上面显示的第一个 AlterColumn。当以本机生成的方式运行时,迁移导致 SQL Server 抱怨它无法更改列,因为它存在依赖关系。事实上,唯一的依赖是它是一个 PK(没有将它作为 FK 引用的表)。我将迁移修改为如下所示,现在我收到如上所示的数据类型错误。
DropPrimaryKey("dbo.Venues");
AlterColumn("dbo.Venues", "ID", c => c.Int(identity:false));
AlterColumn("dbo.Venues", "ID", c => c.String(nullable: false, maxLength: 128));
AddPrimaryKey("dbo.Venues", "ID");
【问题讨论】:
标签: entity-framework-5 entity-framework-migrations