如何在单独的程序集中加载数据库提供程序而不是我的Web应用程序?

时间:2016-04-28 10:41:14

标签: asp.net-mvc postgresql npgsql petapoco

我尝试使用PetaPoco访问PostgreSQL数据库但是我遇到了这个例外:"无法加载PostgreSQLDatabaseProvider DbProviderFactory。"
问题与数据库访问是在与我的Web应用程序不同的程序集中完成的事实有关 因此,为了避免异常,我目前需要加载npgsql的数据库提供程序,不仅在我的DAL程序集中,而且在我的Web应用程序中。 我怎么能避免这种情况?

DAL程序集中的代码:

try
{
    using (Database db = new PetaPoco.Database("MyDb"))
    {
        // things ...
        return true;
    }
}
catch (Exception ex)
{
    // TODO: log exception
    return false;
}

Web应用程序的web.config:

<connectionStrings>
    <add name="MyDb" connectionString="Server=127.0.0.1;Port=5432;Database=mydatabase;User Id=the_user;Password=the_password;" providerName="Npgsql" />
</connectionStrings>

<system.data>
    <DbProviderFactories>
      <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server"
           type="Npgsql.NpgsqlFactory, Npgsql, Version=3.0.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
    </DbProviderFactories>
</system.data>

0 个答案:

没有答案