为了账号安全,请及时绑定邮箱和手机立即绑定

使用 MySQL 的 Code First 不创建表

使用 MySQL 的 Code First 不创建表

C#
汪汪一只猫 2021-11-07 19:28:12
尝试使用实体框架和 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)
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

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

  1. 打开包管理器控制台

  2. Enable-Migrations

  3. Add-Migration InitialCreate (或任何你想要的名字。

  4. Update-Database

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


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 375 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信