sql - Postgres 中的原始 SQL 与 EntityFramework Core
问题描述
假设我有一个客户表,并且想使用原始 SQL 进行查询。下面的代码不起作用:
List<Customer> customers = _db.Customer.FromSql("SELECT * FROM Customer").ToList();
它失败并显示错误代码
'42P01:关系“客户”不存在'
解决方案
在某些情况下,Postgres 会生成区分大小写的表名,因此您可能必须以这种方式引用表名。这是通过在表名周围添加引号来完成的,如下所示:"Customer"
.
您可能还需要包含架构。这应该有效:
List<Customer> customers = _db.Customer.FromSql("SELECT * FROM \"public\".\"Customer\"").ToList();
假设您的架构名称是“公共的”。否则,请插入您的架构名称。
推荐阅读
- javascript - 从检查功能中找不到 ID
- apache-spark - AWS Glue - 处理数据时工作线程上的磁盘空间不足
- c++ - 这可以被认为是 lambda 函数的有效 C++ 变体吗?
- java - java.lang.IllegalArgumentException:无法在此 ManagedType 上找到具有给定名称 [XXX.title] 的属性
- visual-studio-code - 这个颜色主题是什么?
- spring - 在映射关系的两端并保存它时,我在 Spring Data Neo4j 中得到不一致的结果
- java - Kafka Stream windowedBy 聚合 Materialized withRetention Out Of Memory
- ruby-on-rails - 将设计添加到 Rails 应用程序 NoMethodError:未定义的方法 `devise' 为用户(调用 'User.connection' 建立连接
- html - 需要进行更正,但我不明白如何做上述指示
- mysql - 如何使用 Homebrew 在 macOS BigSur (Apple Silicon) 上安装和启动 MySQL 5.7?