考虑安装EntityFramework 6.13和EntityFramework6的Npgsql 请考虑这些是用于Windows服务的packages.config和App.config。当尝试访问数据库时,我得到以下异常:
InnerException = {“系统找不到指定的文件”}
对数据库上下文的连接尝试引发异常“在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确并且SQL Server配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接“
packages.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
<package id="EntityFramework6.Npgsql" version="3.0.7" targetFramework="net45" />
<package id="Npgsql" version="3.0.7" targetFramework="net45" />
</packages>
App.config中:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql"></provider>
</providers>
<defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, Npgsql.EntityFramework" />
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql" />
<add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="KutaisiDatabase" connectionString="Server=localhost;Database=KutaisiDatabase;User Id=postgres;Password=12345;" providerName="Npgsql" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.7.0" newVersion="3.0.7.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
对我来说,最古怪的事实是,相同的设置适用于Windows窗体应用程序(不是服务)。 这种行为可能是什么原因? 任何帮助将受到高度赞赏。
答案 0 :(得分:0)
答案是FOUND:引用的项目没有将application.exe.config复制到输出目录,因此服务将连接字符串视为SQL Server连接字符串,因此对于postgres数据库它不起作用。