尝试使用实体框架和 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)
当年话下
相关分类