首页 > 解决方案 > Postgres 中的原始 SQL 与 EntityFramework Core

问题描述

假设我有一个客户表,并且想使用原始 SQL 进行查询。下面的代码不起作用:

List<Customer> customers = _db.Customer.FromSql("SELECT * FROM Customer").ToList();

它失败并显示错误代码

'42P01:关系“客户”不存在'

标签: sqlpostgresqlentity-framework-corequoted-identifier

解决方案


在某些情况下,Postgres 会生成区分大小写的表名,因此您可能必须以这种方式引用表名。这是通过在表名周围添加引号来完成的,如下所示:"Customer".

您可能还需要包含架构。这应该有效:

List<Customer> customers = _db.Customer.FromSql("SELECT * FROM \"public\".\"Customer\"").ToList();

假设您的架构名称是“公共的”。否则,请插入您的架构名称。


推荐阅读