問題タブ [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 で構築されたアプリケーションがあります。私のデータベースには、データ所有者 (xxx-owner)、データ編集者 (xxx-editor)、およびデータ閲覧者 (xxx-viewer) の 3 人のユーザーがいます。各ユーザーには、xxx-schema、xxx-editor-schema、および xxx-viewer-schema と呼ばれる独自のスキーマがあります。すべてのデータは xxx-schema に保存されます。

これには、次のスニペットに示すように、xxx-editor または xxx-viewer ユーザーとしてデータベースに接続するときにスキーマを指定する必要があります。

このルートに従うとしたら、Web.config でスキーマを指定します。ただし、使用するスキーマを指定するためのより良い方法が必要です。可能であれば、文字列の連結を完全に削除できるようにしたいと考えています。

SQL ステートメントで使用されるスキーマを定義する最良の方法は何ですか?


編集

PostgreSQL User Manualの以下は有望に見えます。

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 を読み込もうとしたときに、オブジェクト City に対して NHibernate.ObjectNotFoundException が発生しました...しかし、Npgsql 1.0 ではすべて正常に動作します...

何か案が?

ありがとう

0 投票する
1 に答える
708 参照

c# - 指定されたPostgreSqlタイプをマップ(NHibernate)する方法は?

次のようにマッピングされた 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

そのため、SQL が 0 の結果を返すため、ObjectNotFoundException が発生しました...

Npgsql の開発者は、PK に正確なタイプを指定するように言われました。その場合は、character(10)...

NHを使用してそれを行うにはどうすればよいですか? sql-typeを使用してみましたが、Hibernate にしか存在しないと思います...

ありがとう

0 投票する
2 に答える
893 参照

.net - Npgsqlリーダー型キ​​ャストエラー(以前は:monoは複合型を適切にシリアル化しません)

複合型のシリアル化がMono2.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、およびPostgreSQLをデータベースとして使用するNHibernateを使用してWebアプリケーションを作成しています(VBを使用しています...私の選択ではありません)。

テーブルの 1 つには、inet 型の列が 2 つあります。マッピングファイルでは、文字列としてマッピングしてみました。行を更新する必要があるまで、これは実際にはうまくいきました。

次のエラー メッセージが表示されます。「列"mycolumn" は inet 型ですが、式はテキスト型です。

私は、Npgsql が IPAddress オブジェクトまたは NpgsqlInet オブジェクトのいずれかを必要としていることに気付きました。NpgsqlInet オブジェクトには文字列を受け入れるコンストラクターがあるため、次の手順に従ってカスタム ユーザー タイプを作成しようとしました。

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

取得はうまくいきます:

ご覧のとおり、データベースから文字列として取得し、それをコンストラクターのパラメーターとして使用します。

しかし、NullSafeSet メソッドに行き詰まっています。Npgsql はオブジェクトを NpgsqlInet 型として必要とするため、NHibernateUtil.String.NullSafeSet メソッドを使用できません。

何か案は?

0 投票する
3 に答える
1565 参照

ssis - Using npgsql with SSIS

I am using npgsql as the ADO.NET provider in SSIS to connect to Postgres and create some workflows. I am able to connect to postgres but am unable to use the "Table or view" data access mode to list the tables and views. I have to resort to using "SQL command" data access mode.

For the "table or view" access mode, the log shows that the last call is GetDataSourceInformation and it returns successfully. After that there is a close connection.

Has anyone successfully used "Table or view" data access mode using npgsql?

Thanks,

Flash

0 投票する
4 に答える
3787 参照

.net - NPGSQL: Postgres クエリから結果をストリーミングしますか?

大きなテーブル (2,000,000 行) があり、テーブル全体をメモリにロードせずに、各レコードを一度に 1 つずつ画面に出力したいと考えています。

したがって、上記のコードに示されているように、セット全体がメモリにロードされるまで ExecuteReader() は続行されません。結果がストリーミングされるように、この動作を変更するにはどうすればよいですか?

ありがとう

ETA: これは宿題のように思えますが、そうではありません。これは、1 つのクエリでテーブル全体を読み取り、一度に 1 行ずつ結果を処理するという問題を説明する簡単な方法です。

ETA x2:

npgsql からの警告: ExecuteReader と大きなテーブルを呼び出す場合、既知の問題があります。現在、Npgsql のバージョン 1 は、返す前にテーブルからすべてのデータを取得します。このような場合にパフォーマンスが低下する場合は、サーバー カーソルを使用して行をページングする必要がある場合があります。そのためには、次のようなコードを使用できます。