根据npgsql找不到字段,但根据pgadmin存在

时间:2016-02-09 11:46:55

标签: c# postgresql npgsql pgadmin

我在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:找不到字段

在那条线上。

1 个答案:

答案 0 :(得分:2)

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转义。