Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework 将npgsql配置为与.NET3.5和EF一起使用_Entity Framework_Visual Studio_Postgresql_.net 3.5_Npgsql - Fatal编程技术网

Entity framework 将npgsql配置为与.NET3.5和EF一起使用

Entity framework 将npgsql配置为与.NET3.5和EF一起使用,entity-framework,visual-studio,postgresql,.net-3.5,npgsql,Entity Framework,Visual Studio,Postgresql,.net 3.5,Npgsql,我正在开发一个应用程序,它使用与.NETFramework 3.5(不是更新版本)一起工作的第三方库。我的应用程序是WPF,我需要使用EntityFramework连接到PostgreSQL数据库 我在谷歌上搜索了一下,发现连接Postgre最流行的方式是使用npgsql提供程序 所以,我尝试从他们的网站安装npgsql,然后发现exe安装程序只安装.NET4.0和4.5的npgsql。它还为VisualStudio安装了vsix扩展,该扩展工作正常。我必须下载.NET 3.5的npgsql库,

我正在开发一个应用程序,它使用与.NETFramework 3.5(不是更新版本)一起工作的第三方库。我的应用程序是WPF,我需要使用EntityFramework连接到PostgreSQL数据库

我在谷歌上搜索了一下,发现连接Postgre最流行的方式是使用npgsql提供程序

所以,我尝试从他们的网站安装npgsql,然后发现exe安装程序只安装.NET4.0和4.5的npgsql。它还为VisualStudio安装了vsix扩展,该扩展工作正常。我必须下载.NET 3.5的npgsql库,并手动添加对npgsql.dll和npgsql.EntityFrameworkLegacy.dll的引用

我还将我的应用程序目标框架设置为3.5,并使用Nuget安装EntityFramework(4.1.10715是使用.NET 3.5的最新版本)

然后,我可以使用edmx向导(它检测到我的Entityframework设置为“3.5”)连接到数据库,并生成edmx和一些类

所以,问题是,当我尝试在我的应用程序中获取一些数据时,如下所示:

using (var db = new Entities())
{
    var list = db.MyItems.ToList()
}
它总是会出错:

在配置中找不到指定的存储提供程序,或 无效

我通过以下方式配置了我的App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
            <parameter value="v11.0" />
        </parameters>
    </defaultConnectionFactory>
    <providers>
        <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
    </providers>
</entityFramework>
<startup>
    <supportedRuntime version="v2.0.50727" />
</startup>
<connectionStrings>
    <add name="myEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Npgsql;provider connection string=&quot;PORT=5432;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.5.0;DATABASE=mydb;HOST=localhost;PASSWORD=postgres;USER ID=postgres&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

我想我应该在App.config中更改一些内容,但无法找出问题所在


请帮助。

商店提供商失踪。
存储提供程序通常是ADO.Net提供程序。通常在machine.config中注册,但在您的情况下可能不是。
部署应用程序时,我会将其插入App.Config以避免修改machine.Config,但您需要将提供程序放在输出目录中(因此请确保在编译期间复制它)。
无论如何,我在App.config中使用了这段配置(在配置中插入)


缺少商店提供商。
存储提供程序通常是ADO.Net提供程序。通常在machine.config中注册,但在您的情况下可能不是。
部署应用程序时,我会将其插入App.Config以避免修改machine.Config,但您需要将提供程序放在输出目录中(因此请确保在编译期间复制它)。
无论如何,我在App.config中使用了这段配置(在配置中插入)



谢谢!用type=“Npgsql.NpgsqlFactory,Npgsql,Version=2.2.5.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7”编辑了您的答案,因为这对我来说很重要。奇怪的事情。我仔细检查了machine.config(32位和64位)文件,提供程序在那里,代码几乎相同。我碰巧没有找到注册的提供程序。这就是为什么在部署中我将其添加到App.Config。要测试machine.config中的注册是否有效,还可以使用DbProviderFactorys类来避免EF层。谢谢!用type=“Npgsql.NpgsqlFactory,Npgsql,Version=2.2.5.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7”编辑了您的答案,因为这对我来说很重要。奇怪的事情。我仔细检查了machine.config(32位和64位)文件,提供程序在那里,代码几乎相同。我碰巧没有找到注册的提供程序。这就是为什么在部署中我将其添加到App.Config。要测试machine.config中的注册是否有效,还可以使用DbProviderFactorys类来避免EF层。
<system.data>
  <DbProviderFactories>
    <add name="Npgsql Data Provider" 
         invariant="Npgsql" 
         description=".Net Framework Data Provider for Postgresql Server" 
         type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
         support="FF" />
  </DbProviderFactories>
</system.data>