我正在通过.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)
但是,没有自动方法可以从数组中进行批量插入-您将不得不自己编写循环。最有效的方法是使用the bulk insert binary COPY API。否则,您可以在同一DbCommand(用分号分隔)内连接多个INSERT语句,尽管这样做效率较低。
我认为从数组中进行批量插入没有多大意义,因为PostgreSQL在协议级别不支持类似的东西。因此,如果执行此操作,则Npgsql将仅实现循环而不是用户(纯糖),并且通常,我们尝试保持低级状态并仅公开PostgreSQL功能。