尝试使用实体框架和 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 的评论解决了我的问题。我遵循的步骤:
打开包管理器控制台。
Enable-Migrations
Add-Migration InitialCreate
(或任何你想要的名字。)Update-Database
然后在我的 MySQL 数据库中创建了这些表。
- 1 回答
- 0 关注
- 375 浏览
添加回答
举报
0/150
提交
取消