c# - 使用 DbLINQ 时出现 LINQ to PostgreSQL 错误

标签 c# linq postgresql npgsql dblinq

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

我在执行 LINQ to PostgreSQL 时遇到问题。我用 dbmetal 成功生成了 .dbml 和 .cs 文件,我想我得到了所有的引用,代码编译。 引用:

DbLinq
DbLinq.PostgreSql
DbLinq.SqlServer
Npgsql

using DbLinq.PostgreSql;

我得到一个异常(exception):

{"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"}

内部异常:

{"The system cannot find the path specified"}

连接字符串:

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=

有一个异常(exception){"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。您需要一个指定 PostgreSQL 提供程序的 LINQ 连接字符串。

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

您需要一个 PostgreSQL 的 LINQ 提供程序。参见 this questionwikipedia page on LINQ .看dbLinq , LINQ to Entities使用 Entity Framework 的 PostgreSQL 驱动程序,或 dotConnect .

在撰写本文时,nPgSQL 不包含 LINQ 提供程序,因此您需要添加第 3 方提供程序。据我所知,您不能直接将 LINQ 与 nPgSQL 一起使用。

关于c# - 使用 DbLINQ 时出现 LINQ to PostgreSQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14112347/

相关文章:

c# - 按值从 KeyValuePair 列表中删除重复项

c# - 分组查询 Linq

json - 将 PostgreSQL JSON 类型与 Slick 2 代码生成器一起使用

node.js - Sequelize nodejs 返回平面 JSON

c# - 按引用传递而不是按值传递,为什么?

c# - C# 中的测试驱动远程处理 - 我需要单独的服务器 AppDomain 吗?

linq - Entity Framework 查询错误?

Django 用户注册和认证到多个数据库

c# - 文本标签旋转 45 度

c# - LINQ 左连接可空列给出空引用异常