首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PostgreSQL时LINQ到DbLINQ错误

使用PostgreSQL时LINQ到DbLINQ错误
EN

Stack Overflow用户
提问于 2013-01-01 17:01:50
回答 4查看 2.4K关注 0票数 3

我通过PostgreSQL使用LINQ ( DbLINQ )。

我在做时遇到了问题。我成功地生成了.dbml和.cs文件,并且我认为我得到了所有的引用,代码会编译。参考文献:

代码语言:javascript
复制
DbLinq
DbLinq.PostgreSql
DbLinq.SqlServer
Npgsql

using DbLinq.PostgreSql;

我有个例外:

{“在建立到Server的连接时发生了与网络相关或特定于实例的错误。无法找到或无法访问服务器。请验证实例名称是否正确,以及server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误: 40 -无法打开到Server的连接)”}

内部例外:

{“系统找不到指定的路径”}

连接字符串:

代码语言:javascript
复制
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'."}

我成功地通过SquirrelSQL和jdbc驱动程序在Win7 64位,Postgres 9.2 64位上连接。

编辑:这很好

代码语言:javascript
复制
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;

但我发现了一个错误

代码语言:javascript
复制
dataGridView1.DataSource = q

现在我知道这是因为查询没有立即执行。但问题依然存在。“找不到或无法访问服务器”

F1!

lp

EN

回答 4

Stack Overflow用户

发布于 2013-01-01 23:43:34

你展示了一系列完全不同的错误。

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

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

然后,您将显示另一个连接字符串,您说它是“好的”,它附加了DbLinqProvider=PostgreSql;,但是在后面的语句上显示了一个“错误”。您没有显示错误消息,也没有显示用于设置连接的代码,因此我们无法真正帮助您。这确实是一个不同的问题,无论你最初问什么,请张贴一个新的问题,而不是重写你原来的问题。

您需要 PostgreSQL的LINQ提供程序。参见这个问题LINQ上的维基百科页面。看看dbLinqLINQ致实体和实体框架的PostgreSQL驱动程序,或者dotConnect

在编写本报告时,nPgSQL不包括LINQ提供程序,因此您需要添加第三方。AFAIK您不能简单地使用LINQ与nPgSQL直接。

票数 2
EN

Stack Overflow用户

发布于 2013-01-01 19:16:09

我认为postgresql使用与1433不同的默认端口。尝试指定端口5432

票数 0
EN

Stack Overflow用户

发布于 2013-01-02 22:32:29

在我使用ConnectionStringBuilder类创建连接字符串之后,它就工作了。谢谢你的帮忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14112347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档