当使用DbLINQ时,LINQ to PostgreSQL错误

本文关键字:LINQ to PostgreSQL 错误 DbLINQ | 更新日期: 2023-09-27 17:50:32

我正在使用LINQ to SQL (PostgreSQL)通过DbLINQ。

我有一个问题做LINQ到PostgreSQL。我用dbmetal成功地生成了。dbml和。cs文件,我认为我得到了所有的引用,代码编译。参考文献:

DbLinq
DbLinq.PostgreSql
DbLinq.SqlServer
Npgsql
using DbLinq.PostgreSql;

我得到一个异常:

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

内部例外:

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

连接字符串:

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

如果我尝试使用NpgsqlConnectionStringBuilder,我得到:

主机= localhost;端口= 5432;协议= 3;数据库= xxxxx;用户ID = postgres;密码= xxxxx; SSL = False; SSLMODE =禁用;超时= 15;SEARCHPATH =;池= True; CONNECTIONLIFETIME = 15; MINPOOLSIZE = 1; MAXPOOLSIZE = 20; SYNCNOTIFICATION = False; COMMANDTIMEOUT = 20;争取= False; PRELOADREADER = False; USEEXTENDEDTYPES = False;综合安全= False;兼容= 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

当使用DbLINQ时,LINQ to PostgreSQL错误

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

第一个是因为你没有告诉LINQ使用nPgSQL,所以它试图使用MS SQL Server,它不能连接-因为机器上可能没有任何MS SQL Server。这就是为什么错误显示为while establishing a connection to SQL Server

然后显示来自NpgsqlConnectionStringBuilder的nPgSQL连接字符串以及关于host关键字的结果错误。据我猜测,这是因为该类产生的连接字符串是为nPgSQL自己的连接处理例程准备的,而不是为LINQ准备的。你需要一个LINQ连接字符串来指定PostgreSQL提供程序。

然后显示另一个连接字符串,你说是"好",有DbLinqProvider=PostgreSql;附加到它,但说你得到"一个错误"之后的语句。您没有显示错误信息,也没有显示用于设置连接的代码,因此我们无法真正帮助您。这和你最初问的是不同的问题;请针对新问题提出新问题,而不是改写你原来的问题。

PostgreSQL需要一个LINQ提供程序。参见这个问题和LINQ的维基百科页面。查看dbLinq, LINQ to Entities与PostgreSQL驱动程序的实体框架,或dotConnect。 在撰写本文时,nPgSQL不包含LINQ提供程序,因此您需要添加一个第三方的。我猜你不能直接使用LINQ和nPgSQL。

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

在我使用ConnectionStringBuilder类来制作connectionstring之后,它工作了。谢谢你的帮助!

仅供参考,DbLinq项目已经死亡)在我的情况下,它没有立即工作。您的模式现在可能可以工作,但是以后您可能需要投入时间来更新项目)