配置npgsql以用于.NET 3.5和EF

时间:2015-07-15 12:47:07

标签: entity-framework visual-studio postgresql .net-3.5 npgsql

我正在开发一个使用第三方库的应用程序,它使用.NET Framework 3.5(而不是更新版本)。我的应用程序是WPF,我需要使用EntityFramework连接到Postgre SQL数据库。

我google了一下,发现最流行的连接Postgre的方法是使用npgsql提供程序。

所以,我尝试从他们的网站安装npgsql,然后发现exe安装程序只为.NET 4.0和4.5安装了npgsql。它还为Visual Studio安装了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中改变一些东西,但无法弄清楚出了什么问题。

请帮忙。

0 个答案:

没有答案