簡體   English   中英

用於 PostgreSQL 的 .NET 連接器

[英].NET connector for PostgreSQL

上次我使用Npgsql,即1.0版,運行速度很慢。 Npgsql 還有其他替代方案嗎?

1.0 版已經三年了。 嘗試使用 最新的

Npgsql 是一個優秀的連接器。 只需升級到新的。 確保你看一下文檔,它真的很好。 這將解決速度問題。

您詢問了替代方案,因此我還必須推薦另一個不錯的連接器:dotConnect for PostgreSQL。 它是由德瓦特制造的。 有一個簡單的免費連接器以及一個完全強大的付費連接器。 付費版有 Linq 和實體框架支持。 http://www.devart.com/dotconnect/postgresql/

我有使用 .NET MySQL 連接器的經驗。 您所描述的似乎是 DNS 問題。 如果您在連接字符串中使用 URL 並且能夠將其更改為 IP 地址,請嘗試這樣做,看看您的延遲是否消失。

連接 PostgreSQL 時, npgsql仍然是 .NET 的選擇。

自 1.0 版以來,連接器得到了顯着改進,請查看Shay Rojansky 的演示文稿 這不是最新的,但 2018/11 年的增長仍然令人印象深刻。

如果您是從舊版本升級,請仔細閱讀最新版本的發行說明,您可能會破壞代碼中的功能。

此外,我強烈建議您也考慮優化 PostgreSQL 我每天都在分布式企業環境中使用它,工作量很大; 它可以進行調整和調整,對整體性能產生巨大影響。

  1. 正如@yojimbo87 所說,升級到更新的連接器版本。 試試那個。
  2. 使用實體核心框架。 Npgsql 有一個實體框架 (EF) 核心提供程序。
  3. 使用 Postgres 11
  4. 檢查連接池設置 與大多數 ADO.NET 提供程序一樣,Npgsql 默認使用連接池。 當您 Close() 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM