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

您正在显示一系列完全不同的错误。

第一个是因为您没有告诉 LINQ 使用 nPgSQL,所以它正在尝试使用 MS SQL Server 并且无法连接 - 因为机器上可能没有任何 MS SQL Server。这就是错误说的原因while establishing a connection to SQL Server

然后显示一个 nPgSQL 连接字符串 fromNpgsqlConnectionStringBuilder以及由此产生的关于host关键字的错误。尽我所能猜到,这是因为该类生成的连接字符串是为 nPgSQL 自己的连接处理例程而设计的,而不是用于 LINQ。您需要一个指定 PostgreSQL 提供程序的 LINQ 连接字符串。

然后,您显示另一个您说是“很好”的连接字符串已DbLinqProvider=PostgreSql;附加到它,但说您在之后的语句中得到“错误”。您没有显示错误消息,也没有显示用于设置连接的代码,因此我们无法真正帮助您。无论如何,这与您最初提出的问题确实是一个不同的问题。请针对新问题发布新问题,而不是重写您的原始问题。

您需要PostgreSQL 的 LINQ 提供程序。请参阅此问题LINQ 上的维基百科页面。查看带有 PostgreSQL 驱动程序的dbLinqLINQ to Entities或dotConnect

在撰写本文时,nPgSQL 不包含 LINQ 提供程序,因此您需要添加一个 3rd party one。AFAIK,您不能直接将 LINQ 与 nPgSQL 一起使用。

于 2013-01-01T23:43:34.087 回答
0

I think postgresql uses a different default port than 1433. Try specifying the port 5432

于 2013-01-01T19:16:09.803 回答
0

仅供参考,DbLinq 项目已死)在我的情况下,它没有立即工作。您的架构现在可能可以工作,但稍后您可能需要花费时间来更新项目)

于 2013-01-08T20:05:21.867 回答
0

在我使用 ConnectionStringBuilder 类创建连接字符串后它起作用了。谢谢你的帮助!

于 2013-01-02T22:32:29.800 回答