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
相关产品推荐
相关产品推荐

