Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DbLINQ时LINQ到PostgreSQL错误_C#_Linq_Postgresql_Npgsql_Dblinq - Fatal编程技术网

C# 使用DbLINQ时LINQ到PostgreSQL错误

C# 使用DbLINQ时LINQ到PostgreSQL错误,c#,linq,postgresql,npgsql,dblinq,C#,Linq,Postgresql,Npgsql,Dblinq,我通过DbLINQ使用linqtosql(PostgreSQL) 我在执行LINQ到PostgreSQL时遇到问题。我成功地用dbmetal生成了.dbml和.cs文件,我想我已经得到了所有的参考,代码已经编译好了。 参考文献: 我得到一个例外: {“运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的连接。找不到该服务器,或者 无法访问。请验证实例名称是否正确,以及 SQL Server配置为允许远程连接。(提供程序:命名) 管道提供程序,错误:40-无法打开到SQL的连接

我通过DbLINQ使用linqtosql(PostgreSQL)

我在执行LINQ到PostgreSQL时遇到问题。我成功地用dbmetal生成了.dbml和.cs文件,我想我已经得到了所有的参考,代码已经编译好了。 参考文献:

我得到一个例外:

{“运行时发生与网络相关或特定于实例的错误 正在建立与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,我会得到:

主机=本地主机;端口=5432;协议=3;数据库=xxxxx;使用者 ID=研究生;密码=xxxxx;SSL=False;SSLMODE=禁用;超时=15;搜索路径=;池=真;CONNECTIONLIFETIME=15;最小池大小=1;MAXPOOLSIZE=20;SYNCNOTIFICATION=False;COMMANDTIMEOUT=20;登记=假;preload reader=False;USEEXTENDEDTYPES=False;综合安全=假;兼容=2.0.12.0;应用程序名=

异常情况下,
{”关键字不受支持:“主机”。}

我成功地在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

我认为postgresql使用的默认端口与1433不同。尝试指定端口5432,您将显示一系列完全不同的错误

第一个原因是您没有告诉LINQ使用nPgSQL,因此它尝试使用MS SQL Server,但无法连接,因为机器上可能没有任何MS SQL Server。这就是为什么在建立到SQL Server的连接时会显示

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

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

您需要PostgreSQL的LINQ提供程序。请参阅和。请看,使用实体框架的PostgreSQL驱动程序,或


在撰写本文时,nPgSQL不包括LINQ提供程序,因此您需要添加第三方提供程序。很抱歉,您不能直接将LINQ与nPgSQL一起使用。

在我使用ConnectionStringBuilder类创建connectionstring之后,它就工作了。
谢谢你的帮助

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

我尝试过了,运气不好。我不知道是什么问题。我怎么能测试连接字符串?你是怎么尝试的?如果代码生成器已运行,则它必须已连接到有限程度。我尝试将连接字符串修改为server=127.0.0.1:5432;数据库=xxxxx;用户id=postgres;密码=xxxxx服务器=localhost:5432;数据库=xxxxx;用户id=postgres;密码=xxxxx服务器=127.0.0.1;端口=5432;数据库=xxxxx;用户id=postgres;password=xxxxx最后一个不起作用(不支持的关键字“port”)。虽然PostgreSQL默认使用端口5432是真的,但这个答案中的基本假设是完全错误的。PostgreSQL不支持MS SQL Server网络协议,因此您不能像连接MS SQL Server那样连接到它。如果使用PostgreSQL提供程序nPgSQL,则默认为PostgreSQL默认端口5432,而不是MS SQL Server默认端口。因此,真正的问题是使用了错误的LINQ提供程序。事实上,问题中的信息也比原来的要多。如果我不清楚,我很抱歉。我正在使用(或希望使用)DBlinq作为提供程序。我使用程序DBmetal生成.dbml和.cs文件。我怀疑它试图连接到“SQL server”,但我不知道我做错了什么,我只是添加了编译器告诉我的所有引用。
dataGridView1.DataSource = q