C# 使用实体框架和Npgsql创建PostgreSQL连接。尝试从SQL Server读取时出错

C# 使用实体框架和Npgsql创建PostgreSQL连接。尝试从SQL Server读取时出错,c#,postgresql,entity-framework,npgsql,C#,Postgresql,Entity Framework,Npgsql,试图通过实体框架配置文件创建上述连接,运行时出现以下错误: 13:02:57.058 0 System.Data.SqlClient.SqlException(0x80131904):建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接) System.ComponentModel.Win32Excep

试图通过实体框架配置文件创建上述连接,运行时出现以下错误:

13:02:57.058 0 System.Data.SqlClient.SqlException(0x80131904):建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。
(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接)

System.ComponentModel.Win32Exception(0x80004005):未找到网络路径

似乎没有确定这是我试图建立的PostgreSQL连接

<configuration>
    <configSections>
        <section name="entityFramework" 
                 type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                 requirePermission="false" />
    </configSections>
    <connectionStrings>
        <add name="Test_Track" 
             connectionString="server=localhost;user id=rouser;password=pass;Database=track;" 
             providerName="Npgsql" />
    </connectionStrings>
    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
        <providers> 
            <provider invariantName="Npgsql" 
                      type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
        </providers>
    </entityFramework>
    <system.data>
        <DbProviderFactories>
            <add name="Npgsql Data Provider" invariant="Npgsql" 
                 description=".Net Data Provider for PostgreSQL" 
                 type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        </DbProviderFactories>
    </system.data>

  • EF:6.0版
  • VS.NETFramework 4.5
  • Npgsql.2.2.7
  • Npgsql.EntityFramework.2.2.7
任何帮助都将不胜感激


干杯

此错误来自MS SQL Server提供程序,而不是Npgsql

MSSQL提供程序正在尝试通过命名管道进行连接,命名管道是Windows独有的,Npgsql不支持


我建议查看您的配置文件,并使用Npgsql.NpgsqlConnectionFactory而不是像magicandre1981提供的链接所示的SqlConnectionFactory。

SqlConnectionFactory的作用是什么?上面的配置文件来自哪个程序集?这是一个web项目还是桌面/服务?确保这些配置部分位于根站点/应用程序的web.config/app.config中,而不仅仅是DLL的app.config。我认为将EF连接到PostgreSQL不需要DBProviderFactorys部分。