このトピックでは、PolarDBの使用方法について説明します。C# アプリケーションをPolarDB for PostgreSQL (Compatible with Oracle) クラスターに接続するためのNETドライバー。
前提条件
PolarDBクラスター用にデータベースアカウントが作成されます。 データベースアカウントの作成方法については、「データベースアカウントの作成」をご参照ください。
PolarDBクラスターへのアクセスに使用するホストのIPアドレスが、クラスターのIPアドレスホワイトリストに追加されます。 クラスターのIPアドレスホワイトリストにIPアドレスを追加する方法については、「クラスターのホワイトリストの設定」をご参照ください。
背景情報
. NETは、Microsoftによって開発されたソフトウェアフレームワークであり、アプリケーションを構築および実行するための包括的なプログラミング環境を提供します。 の最初のバージョン。NET Frameworkは2002年にリリースされました。 統合プログラミングモデルを提供し、複数のプログラミング言語をサポートしました。 これにより、開発者はWindowsでアプリケーションを作成できます。 . NET Frameworkは、LinuxやmacOSなどのさまざまなプラットフォームをサポートするように拡張されました。
PolarDBがさまざまなバージョンの.NETプログラムを提供します。.NET 2.0、.NET 3.5、.NET 4.0、.NET 5.0、.NET 6.0、.NET 7.0、.NET 8.0、. NET Core 3.1、 . NET Standard 2.0、および .NET Standard 2.1。
ソフトウェアパッケージ
NpgsqlとPolarDBの間のマッピングは複雑です。 PolarDBは、2.2.7、5.0.10、7.0.6.1、および8.0.4.1のバージョンのNpgsqlをサポートしています。 PolarDBは、プラットフォームサポートを提供するEntity Framework Core 5.0.10もサポートしています。2.0から7.0までのNETバージョン。
プログラム名 | 2.2.7 | 5.0.10 | 7.0.6.1 | 8.0.4.1 |
. NET 2.0 | ||||
. NET 3.5 | ||||
. NET 4.0 | ||||
. NET 5.0 | ||||
. NET 6.0 | ||||
. NET 7.0 | ||||
. NET 8.0 | ||||
. NET Core 3.1 | ||||
. NET標準2.0 | ||||
. NET標準2.1 |
接続文字列パラメータ
アプリケーションは、データベースに接続するための接続文字列を提供する必要があります。 接続文字列には、Host、Username、Passwordなどのパラメーターが含まれます。
接続文字列はkeyword1=value; keyword2=value; 形式であり、大文字と小文字は区別されません。 二重引用符 (") を使用して、セミコロン (;) などの特殊文字を含む値を囲むことができます。
次の表に、ドライバーでサポートされている接続文字列パラメーターを示します。
パラメーター | 例 | 説明 |
ホスト |
| PolarDBクラスターへの接続に使用されるエンドポイント。 エンドポイントの表示方法については、「エンドポイントの表示または申請」をご参照ください。 |
ポート |
| PolarDBクラスターへの接続に使用されるポート番号。 デフォルト値:1521 |
データベース |
| 接続するデータベースの名前。 |
ユーザー名 |
| PolarDBクラスターへの接続に使用されるデータベースアカウントの名前。 |
パスワード |
| PolarDBクラスターへの接続に使用されるデータベースアカウントのパスワード。 |
プール |
| 接続プール機能を有効にするかどうかを指定します。 |
最小プールサイズ | 0 | 接続プールの最小サイズ。 |
最大プールサイズ | 100 | 接続プールの最大サイズ。 |
接続アイドル寿命 | 300 | アイドル接続のタイムアウト期間。 このパラメーターは、接続の総数が [最小プールサイズ] パラメーターの値を超えたときに、接続プール内でアイドル接続が閉じられるまでの期間を指定します。 単位は秒です。 |
接続の剪定間隔 | 10 | アイドル接続が解放される間隔。 単位は秒です。 |
例
サンプルコード:
using Npgsql;
var connString = "Host=xxxx;Port=xxxx;Username=xxx;Password=xxx;Database=xxxx";
await using var conn = new NpgsqlConnection(connString);
await conn.OpenAsync();
// Retrieve all rows
await using (var cmd = new NpgsqlCommand("SELECT sysdate FROM dual", conn))
await using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
Console.WriteLine(reader.GetDateTime(0));
}サンプル結果:

よくある質問
Oracleデータベースのテーブル名はすべて大文字です。 OracleデータベースをPolarDBクラスターに移行した後に、設定されたテーブル名が見つからない場合はどうすればよいですか。
NuGetを使用して、アプリケーションに
EFCore.NamingConventionsパッケージをインストールします。 次に、UseSnakeCaseNamingConvention()をDbContext設定に追加します。 このようにして、テーブル名と列名は自動的にスネークケースに変換されます。 これは、明示的な注釈の必要性を排除します。protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseNpgsql(...) .UseSnakeCaseNamingConvention();アプリケーションの特定のカスタム型変換では、Date型を使用します。 PolarDBパッケージの使用後にエラーが発生した場合はどうすればよいですか?
NpgsqlDbType.Date型がデータレイヤーで使用されている場合は、NpgsqlDbType.Sysdate型に変更できます。
変更の前に:
case OracleDbType.Date: return NpgsqlDbType.Date;変更後:
case OracleDbType.Date: return NpgsqlDbType.Sysdate;
リリースノート
8.0.4.1 (2024年9月18日)
新機能: PolarDB 8.0.4.1がサポートされています。 PolarDBバージョンは、
. NET 6.0、. NET 7.0、および. NET 8.0
7.0.6.1 (2024年8月23日)
新機能: PL/SQLストアドプロシージャは、2ドル記号 (
$$) を指定せずに実行できます。修正された問題:
メタデータ内のデータベース管理システム (DBMS) の組み込みオブジェクトが正しく識別されません。
ROWIDのため、データ型を読み取ることができません。
7.0.6 (2024年6月19日)
新機能: PolarDB for PostgreSQL (Oracle互換) 2.0は、64ビットの日付形式をサポートしています。