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));
那就是全部。 谢谢。