You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core 3.1 Visual Studio中PostgreSQL DB First Scaffolding报错求助

解决PostgreSQL复合主键表EF Core Scaffolding找不到表的问题

以下是针对性的排查和解决步骤:

  • 检查表名大小写与架构匹配
    PostgreSQL对标识符大小写敏感,若创建表时用双引号定义了表名(如"UserOrders"),Scaffolding时必须严格匹配大小写,同时明确指定表所在架构(默认是public,非默认架构需手动指定)。示例命令:

    Scaffold-DbContext "Host=localhost;Database=your_db;Username=user;Password=pass" Npgsql.EntityFrameworkCore.PostgreSQL -Tables "\"YourTableName\"" -Schemas public
    
  • 验证复合主键约束的有效性
    先通过SQL确认数据库中复合主键是否正确创建:

    SELECT conname, pg_get_constraintdef(c.oid)
    FROM pg_constraint c
    JOIN pg_class t ON c.conrelid = t.oid
    WHERE t.relname = 'your_table_name' AND contype = 'p';
    

    若主键存在定义问题(如字段顺序错误、约束未生效),需先修复主键约束,再重新执行Scaffolding。

  • 清理旧脚手架文件后重新生成
    删除项目中已生成的对应实体类和DbContext文件,避免旧文件的残留配置干扰新的生成过程,之后重新运行Scaffold命令。

  • 确认连接字符串与权限
    检查连接字符串中的数据库名、用户名、密码是否完全正确,同时确保当前数据库用户对目标表拥有SELECT、USAGE等必要权限,可通过数据库客户端连接并查询目标表验证权限。

  • 改用dotnet CLI执行脚手架命令
    若VS包管理器控制台存在环境异常,尝试用dotnet CLI执行:

    dotnet ef dbcontext scaffold "Host=localhost;Database=your_db;Username=user;Password=pass" Npgsql.EntityFrameworkCore.PostgreSQL --table "your_table_name" --schema public
    

内容的提问来源于stack exchange,提问作者user20512905

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:05:43