使用 MySQL 的 Code First 不创建表

尝试使用实体框架和 MySQL 创建代码优先项目。

当我使用context.Database.EnsureCreated();正确创建表时,但我想使用迁移,因此代码更改为:context.Database.Migrate();这就是我收到错误的时候:


MySqlException: 表 'library.publishers' 不存在


我确实看到创建了数据库并且有一个空表:__efmigrationshistory但那是唯一的表,没有发布者像使用 ensureCreated 那样。


我在这里缺少什么?


这是重现错误的最小代码:


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但遇到更多错误...

添加了一个参考Microsoft.EntityFrameworkCore.Design,现在 InitialCreate 显示:


System.MissingMethodException:找不到方法:'Void 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)


汪汪一只猫
浏览 376回答 1
1回答

当年话下

我遇到过同样的问题。@Helder Sepulveda 的评论解决了我的问题。我遵循的步骤:打开包管理器控制台。Enable-MigrationsAdd-Migration InitialCreate&nbsp;(或任何你想要的名字。)Update-Database然后在我的 MySQL 数据库中创建了这些表。
打开App,查看更多内容
随时随地看视频慕课网APP