MySQL的Code First不会创建表

时间:2018-07-31 01:25:10

标签: c# mysql entity-framework .net-core

尝试使用Entity Framework和MySQL创建代码优先项目。
当我使用Figure 1时,表已正确创建,但是我想使用迁移,因此代码更改为:context.Database.EnsureCreated();,也就是在出现错误时:

  

MySqlException:表'library.publishers'不存在

我确实看到数据库已创建,并且有一个空表:context.Database.Migrate();,但这是唯一的表,没有任何发布者像它那样对确保创建。

我在这里想念什么?

这是再现错误的最少代码:

__efmigrationshistory

尝试运行using Microsoft.EntityFrameworkCore; namespace mySqlEFcore { class Program { static void Main(string[] args) { using (var context = new LibraryContext()) { context.Database.Migrate(); context.Publishers.Add(new Publisher { ID = 1 }); context.SaveChanges(); } } private class Publisher { public int ID { get; set; } } private class LibraryContext : DbContext { public DbSet<Publisher> Publishers { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL("server=localhost;database=library;user=root;password=123456;SslMode=none;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Publisher>(entity => { entity.HasKey(e => e.ID); }); } } } } ,但遇到更多错误...
添加了引用Add-Migration InitialCreate,现在InitialCreate显示:

  

System.MissingMethodException:找不到方法:'无效Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuilderFactory..ctor(Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger'1,Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'。      在MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(IDiagnosticsLogger'1 logger,IRelationalTypeMapper typeMapper)

1 个答案:

答案 0 :(得分:0)

我有同样的问题。 @Helder Sepulveda的评论解决了我的问题。 我遵循的步骤:

  1. 打开 Package Manager控制台
  2. Enable-Migrations
  3. Add-Migration InitialCreate或您想要的任何名称。
  4. Update-Database

然后在我的MySQL数据库中创建表。