问题标签 [npgsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1423 浏览

asp.net - 使用 PostgreSQL 时,我应该在哪里(或如何)在 select 语句中定义模式?

我有一个基于 ASP.NET 3.5 和 PostgreSQL 8.3 的应用程序。我的数据库有 3 个用户,一个数据所有者(xxx-owner)、一个数据编辑器(xxx-editor)和一个数据查看器(xxx-viewer)。每个用户都有自己的模式,称为 xxx-schema、xxx-editor-schema 和 xxx-viewer-schema。所有数据都存储在 xxx-schema 中。

这要求我在以 xxx-editor 或 xxx-viewer 用户身份连接到数据库时指定架构,如以下代码段所示。

如果我要遵循这条路线,我会在 Web.config 中指定架构。但是,必须有更好的方法来指定应该使用哪个模式。如果可能的话,我希望能够完全删除字符串连接。

定义要在 SQL 语句中使用的模式的最佳方法是什么?


编辑

PostgreSQL 用户手册中的以下内容看起来很有希望。

SearchPath - 将搜索路径更改为指定和公共架构。

从我有限的测试来看,它在我的情况下可以正常工作。然而,这是一个 PostgreSQL 唯一的解决方案。是否有更多与数据库无关的解决方案,大多数数据库是否提供了这样的功能?


编辑 2

我在下面标记了答案,这导致我在数据库级别更改架构查找顺序。通过以下更改,我不需要在我的 SQL 语句中添加代码。

0 投票
1 回答
3171 浏览

sql - Npgsql & Postgresql:错误:XX001:无法读取关系的块 2354

我有一项服务正在运行并插入数据(大量数据)。有时,这只是大约几周,我收到此错误:

此错误来自 PostGresql 的 Npgsql 连接器:

如果我在 PGAdmin 中执行创建该错误的查询,我也会遇到此错误。任何人都知道为什么这个没有什么特别之处的插入查询会出现这个错误?这个表有一个主键但没有外键,我已经手动验证过,这个表不包含主键。

我该如何解决该错误?

0 投票
2 回答
282 浏览

nhibernate - 更新了 Npgsql(1.0 -> 2.05) 并在 NHIbernate 上收到错误 (ObjectNotFoundException)

我将 Npgsql 驱动程序更新到最新版本(2.0.5),并在我的 NHibernate 应用程序中出现错误...映射:

学校测绘:

...

...

和城市地图:

现在,当我尝试加载 School 时,我得到了一个 NHibernate.ObjectNotFoundException 对象 City ......但是使用 Npgsql 1.0 一切正常......

任何的想法?

谢谢

0 投票
1 回答
708 浏览

c# - 如何映射(NHibernate)指定的 PostgreSql 类型?

我有一个 PK(字符(10)),它的映射如下:

负载适用于 npgsql 1.0,使用 loadbyid 生成的 sql 是:

SELECT city0_."IDCity" as IDMu1_92_0_ FROM "tblCity" city0_ WHERE city0_."IDCity"=E'BR420240'

使用 npgsql 2.0。生成的sql是:

SELECT city0_."IDCity" as IDMu1_92_0_ FROM "tblCity" city0_ WHERE city0_."IDCity"='BR420240'::text

所以,我得到了 ObjectNotFoundException,因为那个 SQL 返回 0 个结果......

Npgsql 开发人员告诉我要指定 PK 的确切类型,在这种情况下:character(10)...

我怎样才能使用 NH 做到这一点?我试过使用sql-type,但我认为它只存在于 Hibernate 中......

谢谢

0 投票
2 回答
893 浏览

.net - Npgsql 阅读器类型转换错误(原为:mono 不能很好地序列化复杂类型)

我对 Mono 2.4.2 中还没有实现序列化复杂类型是对的,还是我犯了一个错误?

当我调用我的远程函数时,我收到一条错误消息:

这是远程功能。当我 string[] 改为使用时,我得到了相同的结果。 string顺利通过。

呼叫者,召集者:

我在http://mono-project.com/FAQ:_Technical找到了这个:

序列化兼容性如何?我可以在 Mono 中序列化对象并在 MS.NET 中反序列化它吗?反之亦然?

Mono 中实现的序列化格式与 MS.NET 完全兼容。但是,拥有兼容的格式是不够的。为了成功交换序列化的对象,对应的类需要在双方具有相同的内部结构(即相同的公共和私有字段)。

如果您正在序列化自己的类,则没有问题,因为您可以控制用于序列化的程序集和类。

但是,如果您从框架中序列化对象,则不能保证序列化兼容性,因为这些对象的内部结构可能不同。在不同的 MS.NET 版本或 Mono 版本之间甚至无法保证这种兼容性。

我们的策略是尽最大努力使框架类在 Mono 和 MS.NET 之间兼容,但有时这是不可能的,因为内部实现差异太大。另请注意,当我们更改一个类以使其与 MS.NET 兼容时,我们将失去与旧版本 Mono 的兼容性。

总而言之,如果您设计的应用程序将在不受您控制的不同环境和平台中运行,并且需要共享序列化对象(使用远程处理、纯文件或其他方式),您必须小心使用哪些对象您共享,并尽可能避免使用框架中的对象。

(请注意,这只适用于基于 System.Runtime.Serialization 框架的序列化程序,不适用于 XmlSerializer)。

但是,它甚至不能在 mono-2.4.2 和另一个 mono-2.4.2 应用程序之间工作。

0 投票
1 回答
2000 浏览

c# - 如何在 Npgsql 中提供查询的表名作为命令参数?

我想为查询提供表名作为命令参数,如下所示:

这似乎导致了这个查询:"SELECT * from E'mytable'"这会导致错误(注意单引号)。

我真的需要为此进行字符串连接吗?从安全的角度来看,这并不重要,因为用户不能更改表名,但用于创建 SQL 查询的字符串连接总是让我毛骨悚然......

谢谢,埃里克

0 投票
4 回答
15789 浏览

c# - 使用npgsql调用以字符为参数的函数

我正在尝试使用 Npgsql 来调用一个以 CHARACTER 作为参数的函数(存储过程),但它不起作用。如果我不带参数或使用 INTEGER 参数声明相同的函数,我会得到我想要的结果集。当我将参数声明为 CHARACTER 时,它停止工作。怎么了?

这是我的函数的代码:

这是我正在使用的 C# 代码:

我已经尝试将参数声明为 CHARACTER、CHARACTER(10)、CHARACTER VARYING 和 CHARACTER VARYING(10)...

编辑:我没有收到任何错误消息,但是我没有得到预期的结果集,而是得到一个空的结果集,其中包含一个与我试图调用的函数同名的列。

0 投票
1 回答
883 浏览

asp.net-mvc - NHibernate、Npgsql 和 inet 类型

我正在使用 ASP.net MVC、NPgsql 和 NHibernate 和 PostgreSQL 作为数据库编写一个 Web 应用程序(使用 VB ......不是我的选择)。

其中一个表有两列 inet 类型。在映射文件中,我尝试将其映射为字符串。这实际上工作得很好,直到我不得不更新一行。

我收到一条错误消息:“列“mycolumn”的类型为inet,但表达式的类型为文本。

我意识到 Npgsql 想要一个 IPAddress 对象或一个 NpgsqlInet 对象。NpgsqlInet 对象有一个接受字符串的构造函数,因此我尝试按照以下说明创建自定义用户类型:

http://intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx

get 工作正常:

如您所见,我将它作为字符串从数据库中提取出来,并将其用作构造函数的参数。

但我陷入了 NullSafeSet 方法。我不能使用 NHibernateUtil.String.NullSafeSet 方法,因为 Npgsql 想要对象作为 NpgsqlInet 类型。

有任何想法吗?

0 投票
3 回答
1565 浏览

ssis - 将 npgsql 与 SSIS 一起使用

我在 SSIS 中使用 npgsql 作为 ADO.NET 提供程序来连接到 Postgres 并创建一些工作流。我能够连接到 postgres,但无法使用“表或视图”数据访问模式来列出表和视图。我不得不求助于使用“SQL 命令”数据访问模式。

对于“表或视图”访问方式,日志显示最后一次调用是GetDataSourceInformation,返回成功。之后有紧密的联系。

有没有人使用 npgsql 成功使用“表或视图”数据访问模式?

谢谢,

闪光

0 投票
4 回答
3787 浏览

.net - NPGSQL:Postgres 查询的流式处理结果?

我有一张大表(2,000,000 行),我想将每条记录一次打印到屏幕上,而无需将整个表加载到内存中。

因此,如上面的代码中所述,直到整个集合加载到内存中,ExecuteReader() 才会继续。如何更改此行为以便流式传输结果?

谢谢

ETA:虽然这看起来像是家庭作业,但事实并非如此。这只是描述涉及使用单个查询读取整个表但一次处理一行结果的问题的一种更简单的方法。

预计到达时间 x2:

来自 npgsql 警告:调用 ExecuteReader 和大型表时存在一个已知问题。目前Npgsql 的第 1 版在返回之前从表中获取所有数据。如果在这种情况下遇到性能不佳的情况,您可能需要使用服务器游标来分页浏览行。为此,您可以使用如下代码: