使用代码优先方法更改主键数据类型

时间:2018-08-29 16:22:23

标签: c#

如何使用.NET中的代码优先方法将Guid数据类型更改为主键的int数据类型而又不会丢失数据?

解雇后,update-database命令抛出以下错误

  

身份列“ Id”必须是int,bigint,smallint,tinyint或十进制或数字的数据类型,其小数位数为0,并且被限制为不可为空。

1 个答案:

答案 0 :(得分:0)

GUID不能在不丢失数据的情况下转换为INT,但是您可以添加一个具有不同名称的ID列。

可能性1:

添加要用作主键的属性,然后添加迁移。

[Key, Required]
public int Id { get; set; }

可能性2:

确保数据库与模型完全同步,并且您具有两者的备份。将您的Id列添加到表中,并将其设置为主键。

ALTER TABLE dbo.YourTable ADD Id INT IDENTITY
ALTER TABLE dbo.YourTable ADD CONSTRAINT PK_YourTable PRIMARY KEY(Id)

更新模型以匹配数据库中的更改。

[Key, Required]
public int Id { get; set; }

从数据库中删除_MigrationHistory表,并从项目中删除Migrations文件夹。然后启用迁移。