3

DbLINQ 経由で LINQ to SQL (PostgreSQL) を使用しています。

LINQ to PostgreSQL の実行に問題があります。dbmetal を使用して .dbml および .cs ファイルを正常に生成し、すべての参照を取得したと思います。コードはコンパイルされます。参照:

DbLinq
DbLinq.PostgreSql
DbLinq.SqlServer
Npgsql

using DbLinq.PostgreSql;

例外があります:

{"SQL Server への接続を確立しているときに、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)"}

内部例外:

{"指定されたパスが見つかりません"}

接続文字列:

server=127.0.0.1;database=xxxxx;user id=postgres;password=xxxxx;
ili
server=localhost;database=xxxxx;user id=postgres;password=xxxxx;

NpgsqlConnectionStringBuilder を使用しようとすると、次のようになります。

HOST=localhost;PORT=5432;PROTOCOL=3;DATABASE=xxxxx;USER ID=postgres;PASSWORD=xxxxx;SSL=False;SSLMODE=Disable;TIMEOUT=15;SEARCHPATH=;POOLING=True;CONNECTIONLIFETIME=15;MINPOOLSIZE= 1;MAXPOOLSIZE=20;SYNCNOTIFICATION=False;COMMANDTIMEOUT=20;ENLIST=False;PRELOADREADER=False;USEEXTENDEDTYPES=False;INTEGRATED SECURITY=False;COMPATIBLE=2.0.12.0;APPLICATIONNAME=

例外的に{"Keyword not supported: 'host'."}

Win7 64ビット、Postgres 9.2 64ビットでSquirrelSQLおよびjdbcドライバーを介して正常に接続しました

編集:これでいい

xxxxxDC dc = new xxxxxDC("server=127.0.0.1;database=xxxxx;user id=postgres;password=xxxxx;DbLinqProvider=PostgreSql;");
         var q = from r in dc.xxxxx
                 select r;

しかし、私はエラーが発生します

dataGridView1.DataSource = q

これは、クエリがすぐに実行されないためであることがわかりました。しかし、問題は残ります。「サーバーが見つからないか、アクセスできませんでした」

F1!

lp

4

4 に答える 4

2

一連のまったく異なるエラーが表示されています。

1 つ目は、LINQ に nPgSQL を使用するように指示していないため、LINQ は MS SQL Server を使用しようとしていて、接続できません。おそらく、マシンに MS SQL Server が存在しないためです。それがエラーが言う理由while establishing a connection to SQL Serverです。

次に、キーワードに関する nPgSQL 接続文字列NpgsqlConnectionStringBuilderと結果のエラーを表示しますhost。私が推測できる限り、それは、そのクラスによって生成された接続文字列が、LINQ ではなく、nPgSQL 独自の接続処理ルーチンを対象としているためです。PostgreSQL プロバイダーを指定する LINQ 接続文字列が必要です。

次に、追加された「正常」であると言う別の接続文字列を表示しますが、DbLinqProvider=PostgreSql;その後のステートメントで「エラー」が発生するとします。エラー メッセージも表示されず、接続の設定に使用したコードも表示されないため、実際にお手伝いすることはできません。とにかく、最初に尋ねたものとは本当に別の質問です。元の質問を書き直すのではなく、新しい問題について新しい質問を投稿してください。

PostgreSQL 用の LINQ プロバイダーが必要です。この質問LINQ のウィキペディア ページを参照してください。dbLinq 、Entity Framework 用の PostgreSQL ドライバーを使用したLINQ to Entities 、またはdotConnectをてください。

執筆時点では、nPgSQL には LINQ プロバイダーが含まれていないため、サードパーティのプロバイダーを追加する必要があります。私の知る限り、nPgSQLでLINQを直接使用することはできません。

于 2013-01-01T23:43:34.087 に答える
0

postgresqlは1433とは異なるデフォルトのポートを使用していると思います。ポート5432を指定してみてください

于 2013-01-01T19:16:09.803 に答える
0

ConnectionStringBuilder クラスを使用して接続文字列を作成した後、機能しました。ご協力いただきありがとうございます!

于 2013-01-02T22:32:29.800 に答える
0

参考までに、DbLinq プロジェクトは終了しています) 私の場合、すぐには機能しませんでした。スキーマは今は機能するかもしれませんが、後でプロジェクトを更新するために時間を費やす必要があります)

于 2013-01-08T20:05:21.867 に答える