如何使用.NET中的代码优先方法将Guid数据类型更改为主键的int数据类型而又不会丢失数据?
解雇后,update-database
命令抛出以下错误
身份列“ Id”必须是int,bigint,smallint,tinyint或十进制或数字的数据类型,其小数位数为0,并且被限制为不可为空。
答案 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文件夹。然后启用迁移。