EntityFramework Npgsql DbConfiguration不起作用

我试图用Npgsql配置EntityFramework,首先是代码。

  • EntityFramework 6.1.3
  • Npgsql 3.0.5

现在,我想通过类设置自定义配置,让我们看看:

public class DbConfig : DbConfiguration { public DbConfig() { SetProviderFactory("Npgsql", Npgsql.NpgsqlFactory.Instance); SetProviderServices("Npgsql", provider: NpgsqlServices.Instance); SetDefaultConnectionFactory(new NpgsqlConnectionFactory()); } } 

和我的上下文类:

 [DbConfigurationType(typeof(DbConfig))] public class Db: DbContext { public virtual DbSet Products {get;set;} public Db(DbConnection Connection): base(Connection, true) { } public Db(): base() { } public Db(string connectionString): base(connectionString) { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); modelBuilder.Conventions.Add(); modelBuilder.Conventions.Remove(); modelBuilder.HasDefaultSchema("public"); base.OnModelCreating(modelBuilder); } } 

我尝试访问产品:

 class Program { static void Main(string[] args) { Db.ConfigureMigrations(); string connectionString = "Server=localhost;Port=5432;Database=stockDb;User Id=postgres;Password=123456;"; using (var C = new Db(connectionString)) { var productos = C.Productos.Count(); Console.WriteLine(productos); } Console.WriteLine("listo"); Console.ReadKey(); } } 

但我有一些例外:

  • EntityFramework.dll中发生’System.Data.Entity.Core.ProviderIncompatibleException’。 内部exception:{“提供程序未返回ProviderManifestToken字符串。”}

要么:

初始化字符串的格式不符合从索引0开始的规范。

我不知道什么是错的。

我得到了参考:

https://msdn.microsoft.com/en-us/data/jj680699.aspx

csomeone可以帮助我吗?

我解决了这个问题

问题出在Db.ConfigureMigrations(); 线。

如果我评论该行,但我需要迁移,那么在我的ConfigureMigrations方法的Db上下文中,我需要更改:

Database.SetInitializer(new MigrateDatabaseToLatestVersion(true));

那就是全部。 谢谢。