NpgSql,尝试连接Conection String时无法设置Database.DefaultConnectionFactory

时间:2016-11-04 07:44:07

标签: c# entity-framework postgresql npgsql

DBContext Msdn Class

当我尝试连接带有ConStr参数的构造函数时,应用程序会在下面抛出异常。但是,如果我使用第一个没有constr的构造函数,则成功连接。

抛出异常消息:

  

无法将Database.DefaultConnectionFactory设置为。的实例   ' Npgsql.NpgsqlFactory,Npgsql'在应用程序中指定的类型   组态。有关详细信息,请参阅内部异常。

内部异常消息

  

类型' Npgsql.NpgsqlFactory'上的构造函数没找到。

Entity Framework - Version 6.1.3,
EntityFramework6.Npgsql - Version 3.1.1,
Npgsql - Version 3.1.7

1 个答案:

答案 0 :(得分:1)

在DbContext实现名称空间中包括以下内容:

using Npgsql;
using System.Data.Entity;

class NpgSqlConfiguration : DbConfiguration
{
    public NpgSqlConfiguration()
    {
        var name = "Npgsql";

        SetProviderFactory(providerInvariantName: name,
        providerFactory: NpgsqlFactory.Instance);

        SetProviderServices(providerInvariantName: name,
        provider: NpgsqlServices.Instance);

        SetDefaultConnectionFactory(connectionFactory: new NpgsqlConnectionFactory());
    }
}

在依赖项注入中或决定创建上下文的任何地方以这种方式实例化上下文:

    MyDbContext _dbContext;
    var connectionString = Config.GetConnectionString("MyConnectionStringName");
    NpgsqlConnection connection = new Npgsql.NpgsqlConnection(connectionString);
    _dbContext = new MyDbContext(connection);