Npgsql 我得到:42P01:关系 "sometable" 不存在

Npgsql i get: 42P01: relation "sometable" does not exist

我正在尝试通过 Npgsql 运行 这个查询,当我 运行 它直接在服务器上时这个查询工作得很好,因为我得到:查询成功返回,但在 15 [=41] 中没有结果=],当我使用 Npgsql 时,我得到:42P01:关系 "sometable" 不存在

我知道错误出在 INSERT 语句中,我是否遗漏了什么?

连接字符串:Host=192.168.137.47;Port=5432;UserId=postgres;Password=test;Database=pg_database;

        var m_createdb_cmd = new NpgsqlCommand();
        m_createdb_cmd.Connection = _connPg;
        m_createdb_cmd.CommandText = psSQL;
        _connPg.Open();
        m_createdb_cmd.ExecuteNonQuery();
        _connPg.Close();

查询

BEGIN;
CREATE TABLE "sometable" (
"test" varchar(254));
INSERT INTO "sometable" ("test") VALUES ('Hello World');
COMMIT;

日志

2015-10-01 07:08:46 EDT 错误:关系 "sometable" 在字符 13 处不存在 2015-10-01 07:08:46 EDT 声明:插入 "sometable" ("test") 值 ('Hello World')

p.s.:我也看了PostgreSQL ERROR: 42P01: relation "[Table]" does not exist 没用

创建table。提交该交易。 然后在一个单独的事务中,插入数据。

这是由于 Npgsql 3.x 中引入的已知限制 - 当在一个命令中发送多个 SQL 语句时,后面的语句不再依赖于前面语句中创建的实体。例如,您不能创建一个 table 然后在同一个命令中插入它。解决方法是简单地将 table 创建和插入分成两个命令(注意这与事务无关)。

跟踪此问题的是 https://github.com/npgsql/npgsql/issues/641