首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更改列上id的类型,这也是一个带有ef迁移的主键。

更改列上id的类型,这也是一个带有ef迁移的主键。
EN

Stack Overflow用户
提问于 2022-03-09 09:51:33
回答 1查看 386关注 0票数 0

我有以下模式:

代码语言:javascript
代码运行次数:0
运行
复制
[Key]
public int CustomerSearchConfigId { get; set; }
[Key]
public string CategoryId { get; set; }

[ForeignKey(nameof(CustomerSearchConfigId))]
public CustomerSearchConfig Config { get; set; }

CategoryId是一个字符串,但我现在发现它需要是一个INT。因此,我将类型更改为int,运行

代码语言:javascript
代码运行次数:0
运行
复制
dotnet ef migrations add AddFieldsAndRenameFields

除其他外,其中包括:

代码语言:javascript
代码运行次数:0
运行
复制
migrationBuilder.AlterColumn<int>(
    name: "CategoryId",
    table: "CustomerSearchConfigTagCategory",
    type: "int",
    nullable: false,
    oldClrType: typeof(string),
    oldType: "nvarchar(450)");

但是,当我运行它时,我会得到以下错误:

代码语言:javascript
代码运行次数:0
运行
复制
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呢?

EN

回答 1

Stack Overflow用户

发布于 2022-03-09 12:16:36

简单的方法是删除数据库并再次构建数据库,以防您没有任何损伤记录。因此,如果需要将所有信息保存在数据库中,请参阅guidеhttps://www.codeproject.com/Articles/1193009/Changing-primary-key-data-type-in-EF-Core

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71407359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档