根据 NPGSQL 找不到字段,但根据 PGadmin,它存在

本文关键字:PGadmin 存在 NPGSQL 找不到 字段 根据 | 更新日期: 2023-09-27 18:34:00

我在 C# 中有以下代码行作为我的查询:

cmd.CommandText = "SELECT * 
                   FROM product 
                   LEFT JOIN category ON product.category_id = category.id 
                   WHERE product.id = @productId";

product表有一个名为 name 的列,我需要它。

这是我在应用程序中用来检索它的行。

product.ProductName = reader.GetString(reader.GetOrdinal("'"product'".'"name'""));

我得到的错误是

System.IndexOutOfRangeException: 找不到字段

在那条线上。

根据 NPGSQL 找不到字段,但根据 PGadmin,它存在

reader.GetOrdinal("name");

首先,结果集没有一个名为 "product"."name" 的字段,而是一个名为 "name" 的字段。考虑一下,如果你要尝试在PostgreSQL中从该结果集中选择,情况是一样的:

SELECT "product"."name" FROM
    (SELECT *
    FROM product 
    LEFT JOIN category ON product.category_id = category.id 
    WHERE product.id = @productId) subquery

不起作用,但是:

SELECT "name" FROM
    (SELECT *
    FROM product 
    LEFT JOIN category ON product.category_id = category.id 
    WHERE product.id = @productId) subquery

确实如此。

其次,不要在字段名称上使用 PostgreSQL 转义。