Entity Framework 和 SQL 服务器之间的主键标识符差异

Primary key identifier difference between Entity Framework and SQL Server

我正在使用 .NET 应用程序开发 DB-first 环境。

我在创建迁移文件时意识到,Entity Framework 在需要删除主键时没有从 SQL 服务器获取正确的主键名称。

这是迁移文件生成的删除主键的内容:

DropPrimaryKey("dbo.TableName");

但是在SQL服务器中,PK约束是这样的:

[PK__TableName__48AFA797B7F88EC3]

我有两个问题:

当我 运行 迁移文件包含 DropPrimaryKey("dbo.TableName"); 时它不起作用,我收到此错误:

'PK_dbo.TableName' is not a constraint.
Could not drop constraint. See previous errors.

Why PK has these randomly generated numbers in the name?

如果您不为约束命名,SQL服务器将为它生成一个名称。

When I run the migration file . . .

为什么还要生成迁移?在数据库优先的工作流中,您将架构更改直接应用于数据库,然后重新搭建或调整 EF 模型以匹配。迁移仅用于代码优先工作流。