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]
我有两个问题:
- 为什么 PK 约束的名称中有这些随机生成的数字?
- 为什么 Entity Framework 无法检测到该名称并根据当前架构创建迁移文件?
当我 运行 迁移文件包含 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 模型以匹配。迁移仅用于代码优先工作流。
我正在使用 .NET 应用程序开发 DB-first 环境。
我在创建迁移文件时意识到,Entity Framework 在需要删除主键时没有从 SQL 服务器获取正确的主键名称。
这是迁移文件生成的删除主键的内容:
DropPrimaryKey("dbo.TableName");
但是在SQL服务器中,PK约束是这样的:
[PK__TableName__48AFA797B7F88EC3]
我有两个问题:
- 为什么 PK 约束的名称中有这些随机生成的数字?
- 为什么 Entity Framework 无法检测到该名称并根据当前架构创建迁移文件?
当我 运行 迁移文件包含 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 模型以匹配。迁移仅用于代码优先工作流。