nhibernate - NpgSql 上的数组绑定实现
问题描述
我正在使用 Nhibernate over .Net 开发 Npgsql,用于 PostgreSQL 查询生成以及从 oracle 迁移,
我对通过 NpgSql 的“数组绑定”感到困惑我发现一些讨论 数组绑定与 Npgsql似乎解决方案是标准批量插入
示例查询下方;
INSERT INTO <table_name>(C1,C2) VALUES (1, :V01);, V01: "System.String[]"
在 oracle 似乎 odp.net 有一些用于批量插入的数组绑定实现(在 C# 中将批量数据插入 Oracle 数据库)。
在 Npgsql 是否有关于数组绑定或路线图的任何实现?(注意:Npgsql 版本是 3.2.7 ,Nhibernate v4.0.4.4000 最后是 Postgresql 版本 9.4)
解决方案
由于 PostgreSQL对参数有一流的支持,Npgsql 允许您将数组作为单个参数值传递(即,就像您可以有一个字符串列一样,您也可以有一个数组列)。
但是,没有自动方法可以从数组中进行批量插入 - 您将不得不自己编写循环。最有效的方法是使用批量插入二进制 COPY API。否则,您可以在同一个 DbCommand(由分号分隔)内连接多个 INSERT 语句,尽管这样效率会降低。
我认为从数组中批量插入没有什么意义,因为 PostgreSQL 在协议级别不支持类似的东西。因此,如果我们这样做,Npgsql 将只是实现循环而不是用户(纯糖),并且通常我们尝试保持低级并且只公开 PostgreSQL 功能。
推荐阅读
- c# - 从围绕 Z 的旋转获取方向
- java - spring boot 返回字符串而不是 .html 文件
- android - Android Studio 加载图片文件失败
- r - 循环用于在 R 中的参数之间计算行
- c - 指向结构指针的指针
- c# - Mathnet.Numerics 和 Mathnet.Numerics.Signed 有什么区别?
- php - PHP SoapClient - SOAP 函数调用返回的空值
- android - 单击按钮时将 TextView 文本插入 SQLite
- python - 如何使用 face_recognition 模块执行 python .exe 文件
- r - 如何在不删除 NA 或 0 的情况下计算匹配对象