插入过程中的npgsql ado.net核心UpdateRowSource

时间:2019-05-03 09:48:16

标签: postgresql datatable ado.net npgsql sqldataadapter

我正在使用npgsql的SqlDataAdapter实现将新行从c#数据表对象转移到Postgres数据库。效果很好。

运行命令后,数据库将为列“ ID”生成一个新值,该值应位于DataTable中。为此,我使用了“将值插入到返回中” SQL语句,该语句使我们可以访问在插入过程中填充或修改的列。

要访问这些“返回”值,我添加了带有Direction = Output的其他Parameter对象,并将属性sourceColumn设置为DataTable中的columnName。

虽然这适用于Oracle数据库,但是使用postgress npgsql 4.0.6还是不成功。插入后,这些值将不会显示在数据行中。

这是我代码中的一些片段。

par = new NpgsqlParameter(prefix + name, NpgsqlDbType.Bigint)
{
    Direction = ParameterDirection.Output,
    SourceColumn = name,
    NpgsqlDbType = NpgsqlDbType.Bigint,
    DbType = DbType.Int64, 
};
dataAdapterUpdateIns.InsertCommand.Parameters.Add(par);

dataAdapterUpdateIns.InsertCommand.UpdatedRowSource = UpdateRowSource.OutputParameters;

用于插入的SQL语句。

INSERT INTO "aimPortQS"."QS"."DataSet_Tbl3" ("Text1", "Datum1", "Guid1", "Guid2") VALUES (@Text1, @Datum1, @Guid1, @Guid2) RETURNING "ID"  INTO @ID

有人知道这是在npgsql中实现的吗,还是有一个有关如何设置参数的示例吗?

0 个答案:

没有答案
相关问题