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

如何在ASP.NET Core 9 MVC中用Npgsql和EF Core获取数据库单行值

解决方法

出现该错误的核心原因是:EF Core 通过值元组映射查询结果时,要求返回的列名与元组属性名完全匹配。而 PostgreSQL 默认会把未用双引号包裹的标识符转为小写,你的元组属性是大写的Klient、Krediit、Vaba,导致 EF Core 无法找到对应列,进而抛出异常。

你需要在 SQL 语句中为每个列指定与元组属性名完全一致的别名,并用双引号包裹别名以保留大小写:

var tulem = await ctx.Database
                 .SqlQuery<(string Klient, int Krediit, int Vaba)>($"select 'test' as \"Klient\", 1 as \"Krediit\", 2 as \"Vaba\"")
                 .SingleAsync();

如果你的项目配置了 PostgreSQL 使用不区分大小写的标识符(较为少见),也可以改为小写别名并调整元组属性名:

var tulem = await ctx.Database
                 .SqlQuery<(string klient, int krediit, int vaba)>($"select 'test' as klient, 1 as krediit, 2 as vaba")
                 .SingleAsync();

推荐第一种写法,既符合 C# 命名规范,也能确保列名映射的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:22:04