代码优先不创建表

ddhy6vgd  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(328)

尝试使用实体框架和mysql创建代码优先的项目。
当我使用 context.Database.EnsureCreated(); 表的创建是正确的,但我希望使用迁移,以便代码更改为: context.Database.Migrate(); 这时我得到了一个错误:
mysqlexception:表“library.publisher”不存在
我确实看到数据库已创建,并且有一个空表: __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 但是遇到了更多的错误。。。
添加了引用 Microsoft.EntityFrameworkCore.Design 现在初始值显示:
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)

uqjltbpv

uqjltbpv1#

我也有同样的问题。来自@helder sepulveda的评论解决了我的问题。我遵循的步骤:
打开包管理器控制台。
Enable-Migrations Add-Migration InitialCreate (或者随便你叫什么名字。) Update-Database 然后在mysql数据库中创建这些表。

相关问题