問題タブ [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.
c# - NpgSQLdataReaderGetOrdinalが例外をスローします。
プロジェクトのDALで通常使用する一連のメソッド用にNpgSQLのラッパーを作成しました。それらのうちの2つは、通常、DataReaderから直接DTOを入力するために使用します。通常、フィルヘルパーメソッドでは、DTOをインスタンス化し、Datareaderのデータを対応するプロパティにマッピングするプロパティを反復処理します。ほとんどの場合、fillメソッドが生成されます。
プロパティの多くをnullにするか、DTOのデフォルト値を使用することを許可しているため、プロパティを入力する前に、dataReaderのデータがプロパティに対して有効かどうかを確認するメソッドを使用しました。したがって、IsValidString( "fieldname")メソッドとDRGetString( "fieldname")メソッドを次のように使用します。
私のfillメソッドは、クエリを実行したメソッドに遅延し、次のようになります。
これは、2.02より前のNpgSQLでは正常に機能していました。。GetOrdinalメソッドが呼び出されたときに、フィールドがdataReaderに存在しなかった場合は、単に-1が返されます。IsValidString()でfalseを返し、次のプロパティにスキップするのは簡単です。存在しないフィールドをチェックすることによるパフォーマンスのヒットは、事実上無視できました。
残念ながら、NpgSQLを変更すると、フィールドが存在しない場合にGetOrdinalが例外をスローします。コードをtry/catchでラップし、catch内でfalseをスローするという簡単な回避策があります。しかし、特にデバッグモードに入ると、パフォーマンスの低下を感じることができます。長いリストへの記入には数分かかります。
おそらく、NpgSQLには、このメソッドの後方互換性をサポートするために接続文字列(互換性)に追加できるパラメーターがありますが、それが正しく機能することはありません(接続文字列の形式が正しくないため、常に例外が発生します)。とにかく、私はより良い回避策のための提案を探しています。データリーダーからオブジェクトを入力する、または何らかの方法で例外の問題を回避するためのより良い方法はありますか?
c# - Npgsql はパラメータを名前でストアドファンクションに渡します
私は.NETで作業するPgsqlに変換しているコードで作業しています。複数のパラメーターを持つストアド関数を呼び出したいのですが、次のようにパラメーターを名前でバインドしたいと思います。
これまでのところ、名前ではなく、コレクションにパラメーターを追加した順序でパラメーターの型が一致する関数を探しています。
Npgsql がパラメーターをストアド関数に名前でバインドすることは可能ですか?
c# - Rhino モックを使用した NpgsqlCommand の単体テスト
単体テストで「System.InvalidOperationException: The Connection is not open.」というエラーが発生し続けます。
テスト
テスト対象のコード
Rhino Mocks 3.6 を使用してどのようにコードをテストしますか?
PS。NpgsqlConnection は、PostgreSQL サーバーへの接続です。
c# - バックスラッシュ「\\」を含むNpgSQL挿入ファイルパス
ファイルへのパスを含むレコードを作成しようとしています。挿入は、ドライバーPostgres
を使用して、UTF8が有効になっているデータベースに行われます。NpqSQL
私のテーブル定義:
それを実行するコードを含む私のSQLステートメント(最小限に要約):
pgAdminを使用して上記のステートメントを挿入すると、正常に機能します。Visual Studio C#を介してNpgSQLドライバーを使用すると、次の例外で失敗します。
Milenが正確に説明しているように、Postgresはステートメントを数値として解釈します(octal
\ o201 == 0x81)。
マイレンも説明しているように、E
道の前は役に立ちません。
簡単に要約すると、NpqSQLが挿入を停止するのはなぜ\\2010
ですか?
c# - データ テーブルの代わりに単一の文字列を返す C# および NpgsqlDataAdapter
postgresql db とそれにアクセスするための C# アプリケーションがあります。NpgsqlDataAdapter.Fill コマンドから DataSet に返す値で奇妙なエラーが発生しています。
私はこのコードを持っています:
したがって、私の問題は次のとおりです。上記のコードは、私が望んでいるように完全に機能します。ただし、すべての選択 (*) を実行する代わりに、クエリから返される個々の列に名前を付けようとすると、要求した情報が取得されますが、データ テーブル内の個別のエントリに分割されるのではなく、文字列が取得されます次のようなデータ テーブルの最初のインデックスで:
"(0,5,false,ボブ・スミス,7)"
そして、データは正しいです。0、5、ブール値、テキストなどが期待されますが、(明らかに) 1 つの大きな文字列として返されないことをお勧めします。
* を選択すると期待どおりにデータテーブルが得られるのに、特定の列を選択すると、求めている値の文字列である 1 つのエントリを含むデータテーブルが得られる理由は誰でも知っていますか?
postgresql - .NET 4.0プロジェクトでNpgsqlデータプロバイダーを使用できますか?
.NET4.0で記述したいMVCプロジェクトがあります
Entity Frameworkを介して使用する場合、Npgsql(現在.net 3.5をサポート)を使用することは可能ですか?3.5に含まれるEFの機能に制限しますか?
.net - ADODB フィールドの値にアクセスすると System.AccessViolationException が発生する原因は何ですか?
.Net Web サービス (両方とも Windows XP マシン上) から PostgreSQL データベースに接続しています。最近、数回、いくつかの異なるコンピューターでSystem.AccessViolationException
エラーが発生しました。
取得できた 1 つのスタック トレースは、ADODB.recordset を取得してフィールドの値を取得したときに発生していたことを示していました。例えば
これは常に失敗するわけではありません。めったに失敗しません。いずれかのコンピューターで memtest を実行しましたが、問題は見つかりませんでした。
問題は何でしょうか?ドライバーの場合、どのような選択肢がありますか?
c# - npgsql Postgres DB接続のリーク:接続を監視する方法は?
背景:アプリケーションをnpgsqlv1からnpgsqlv2.0.9に移動しています。アプリケーションを数分間実行した後、System.Exception:プールから接続を取得中にタイムアウトが発生します。
Webは、これは接続のリークが原因であると主張しています(db接続を開いていますが、正しく閉じていません)。
それで
npgsqlでリークしているpostgres接続を診断しようとしています。
周りのさまざまなウェブ文献から; リークしている接続を診断する1つの方法は、npgsqlでログを設定し、ログでリークしている接続の警告メッセージを探すことです。問題は、このメッセージがログのどこにも表示されないことです。
npgsql接続を監視するユーティリティも見つかりましたが、不安定でクラッシュします。
そのため、コードを手動で検査する必要があります。npgsql接続を作成するすべての場所で、finallyブロックがそれを破棄します。データリーダーを開くすべての場所で、CommandBehavior.CloseConnectionが使用されます(データリーダーは破棄されます)。
他に確認する場所はありますか、または誰かが漏れているプール接続を探す方法を推奨できますか?
entity-framework - ProviderManifestToken="8.3.7" と Npgsql ProviderManifestToken="8.1.3" の競合を解決するには?
Entity Framework を使用して PostgreSQL データベースに接続しようとしています。残念ながら、SSDL ファイルで EdmGen (または EdmGen2) を使用してモデルを生成した後、ProviderManifestToken は 8.3.7 に設定されますが、現在のバージョンの Npgsql (2.0.9) では 8.1.3 に設定されています。これにより、エンティティ モデルを使用しようとすると例外が発生します。
System.Data.MetadataException: 指定されたスキーマが無効です。エラー: Npgsql.NpgsqlSchema.ssdl(2,52): エラー 0169: すべての SSDL アーティファクトは同じプロバイダーをターゲットにする必要があります。ProviderManifestToken '8.1.3' は、以前に検出された '8.3.7' とは異なります。
ProviderManifestToken eq 8.1.3でそれを修正またはモデルを生成する方法はありますか?
私の予算では許可されない商用データベースコネクタを提案しないでください:P
.net - NPGSQLにはかなり大きなバグがあるようですか?
これは奇妙なものです。次のコードを実行すると、すべての行がデータベースから返されます。これが更新または削除である場合に何が起こるかを想像してみてください。
私の質問は、なぜこれが起こっているのかということです。