我正在使用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
您正在显示一系列完全不同的错误。
第一个是因为你没有告诉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使用的默认端口与1433不同。尝试指定端口5432
在我使用ConnectionStringBuilder类来制作connectionstring之后,它工作了。谢谢你的帮助!
仅供参考,DbLinq项目已经死亡)在我的情况下,它没有立即工作。您的模式现在可能可以工作,但是以后您可能需要投入时间来更新项目)