我有以下模式:
[Key]
public int CustomerSearchConfigId { get; set; }
[Key]
public string CategoryId { get; set; }
[ForeignKey(nameof(CustomerSearchConfigId))]
public CustomerSearchConfig Config { get; set; }
CategoryId是一个字符串,但我现在发现它需要是一个INT。因此,我将类型更改为int,运行
dotnet ef migrations add AddFieldsAndRenameFields
除其他外,其中包括:
migrationBuilder.AlterColumn<int>(
name: "CategoryId",
table: "CustomerSearchConfigTagCategory",
type: "int",
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(450)");
但是,当我运行它时,我会得到以下错误:
The object 'PK_CustomerSearchConfigTagCategory' is dependent on column 'CategoryId'.
ALTER TABLE ALTER COLUMN CategoryId failed because one or more objects access this column.
当我四处搜索的时候,每个人似乎都建议我把它全部删除,重新开始一个全新的迁移历史和所有的东西。
这不是一种选择!
那么,有谁知道我如何不用动用我的表、迁移、数据和理智就可以将CategoryId类型更改为int呢?
发布于 2022-03-09 04:16:36
简单的方法是删除数据库并再次构建数据库,以防您没有任何损伤记录。因此,如果需要将所有信息保存在数据库中,请参阅guidеhttps://www.codeproject.com/Articles/1193009/Changing-primary-key-data-type-in-EF-Core
https://stackoverflow.com/questions/71407359
复制