NpgSql 上的数组绑定实现
Array Binding Implementation over NpgSql
我正在使用 Nhibernate 在 .Net 上使用 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)
由于 PostgreSQL first-class support for parameters,Npgsql 允许您将数组作为单个参数值传递(即,就像您可以有一个字符串列一样,您也可以有一个数组列)。
但是,没有自动的方法从数组中进行批量插入 - 您将不得不自己编写循环。最有效的方法是使用 the bulk insert binary COPY API。否则,您可以在同一个 DbCommand 中连接多个 INSERT 语句(以分号分隔),尽管那样效率会降低。
我认为从数组批量插入没有多大意义,因为 PostgreSQL 在协议级别不支持任何类似的东西。因此,如果我们这样做,Npgsql 将简单地实现循环而不是用户(纯糖),并且通常我们尽量保持低级别并且只公开 PostgreSQL 功能。
我正在使用 Nhibernate 在 .Net 上使用 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)
由于 PostgreSQL first-class support for parameters,Npgsql 允许您将数组作为单个参数值传递(即,就像您可以有一个字符串列一样,您也可以有一个数组列)。
但是,没有自动的方法从数组中进行批量插入 - 您将不得不自己编写循环。最有效的方法是使用 the bulk insert binary COPY API。否则,您可以在同一个 DbCommand 中连接多个 INSERT 语句(以分号分隔),尽管那样效率会降低。
我认为从数组批量插入没有多大意义,因为 PostgreSQL 在协议级别不支持任何类似的东西。因此,如果我们这样做,Npgsql 将简单地实现循环而不是用户(纯糖),并且通常我们尽量保持低级别并且只公开 PostgreSQL 功能。