PostgreSQL的.NET连接器

时间:2010-06-24 17:09:08

标签: postgresql

上次我使用Npgsql,即版本1.0,它工作得非常慢。 Npgsql还有其他替代方案吗?

5 个答案:

答案 0 :(得分:7)

1.0版本已有三年历史。尝试使用the newest one

答案 1 :(得分:1)

Npgsql是一个出色的连接器。只需升级到新的。确保你看一下它真的很好的文档。这将解决速度问题。

你问过另一种选择,所以我还要推荐另一个好的连接器:dotConnect for PostgreSQL。它由Devart制作。有一个简单的免费工具和完全强大的付费连接器。薪酬1有Linq和实体框架支持。 http://www.devart.com/dotconnect/postgresql/

答案 2 :(得分:1)

我对.NET MySQL连接器有经验。您所描述的似乎是DNS问题。如果您在连接字符串中使用的是URL,并且能够将其更改为IP地址,请尝试尝试一下,看看您的延迟是否消失了。

答案 3 :(得分:1)

连接到PostgreSQL时,

npgsql 仍然是.NET的选择。

自1.0版以来,该连接器已得到极大改进,请从this presentation中检出Shay Rojansky;这不是最新的消息,但在2018/11年度的提振仍然是相当可观的。

如果要从旧版本升级,请仔细阅读版本notes of the latest,可能会破坏代码的功能。

此外,我强烈建议您也考虑使用optimizing PostgreSQL。我每天在具有大量工作负载的分布式企业环境中使用它。可以对其进行调整和调整,对整体性能产生巨大影响。

答案 4 :(得分:0)

  1. @ yojimbo87告诉您升级到更新的连接器版本。试试看
  2. 使用实体核心框架。 Npgsql有一个实体框架(EF)核心提供程序。
  3. 使用Postgres 11
  4. 检查连接池设置 像大多数ADO.NET提供程序一样,Npgsql默认使用连接池。当您关闭()NpgsqlConnection对象时,代表Npgsql使用的实际基础连接的内部对象进入要重用的池中,从而节省了不必要地创建另一个连接的开销。

这很适合大多数应用程序,因为通常要在一秒钟的时间内多次使用连接。

这根本不适合您,但是如果您在连接字符串中包含选项Pooling = false,它将覆盖此默认值,而Close()实际上将关闭实际连接。

Npgsql具有一个实体框架(EF)核心提供程序。它的行为类似于其他EF Core提供程序(例如SQL Server),因此常规EF Core文档也适用于此。如果您只是开始使用EF Core,那么这些文档是最佳入门。

开发发生在Npgsql.EntityFrameworkCore.PostgreSQL存储库中,所有问题都应在此报告。 https://www.npgsql.org/efcore/index.html