NpgSql上的数组绑定实现

问题描述 投票:0回答:1

我正在通过.Net在Nhibernate上使用Npgsql进行PostgreSQL查询生成以及从oracle迁移,

而且我对通过NpgSql进行“数组绑定”感到困惑我发现了一些讨论array binding with Npgsql,似乎解决方法是标准的大容量插入]

在示例查询下面;

INSERT INTO <table_name>(C1,C2) VALUES (1, :V01);, V01: "System.String[]"

在oracle上odp.net似乎对批量插入(Bulk Data Insertion into Oracle Database in C#)具有一些数组绑定实现。

在Npgsql中,是否有任何关于数组绑定的实现,或者可能在路线图上?(注意:Npgsql版本是3.2.7,Nhibernate v4.0.4.4000,最后是Postgresql版本9.4)

nhibernate npgsql postgresql-9.4
1个回答
0
投票
由于PostgreSQL具有first-class support for parameters,因此Npgsql允许您将数组作为单个参数值传递(即,就像可以拥有字符串列一样,也可以拥有数组列)。

但是,没有自动方法可以从数组中进行批量插入-您将不得不自己编写循环。最有效的方法是使用the bulk insert binary COPY API。否则,您可以在同一DbCommand(用分号分隔)内连接多个INSERT语句,尽管这样做效率较低。

我认为从数组中进行批量插入没有多大意义,因为PostgreSQL在协议级别不支持类似的东西。因此,如果执行此操作,则Npgsql将仅实现循环而不是用户(纯糖),并且通常,我们尝试保持低级状态并仅公开PostgreSQL功能。

© www.soinside.com 2019 - 2024. All rights reserved.