尝试使用Entity Framework和MySQL创建代码优先项目。
当我使用Figure 1
时,表已正确创建,但是我想使用迁移,因此代码更改为:context.Database.EnsureCreated();
,也就是在出现错误时:
MySqlException:表'library.publishers'不存在
我确实看到数据库已创建,并且有一个空表:context.Database.Migrate();
,但这是唯一的表,没有任何发布者像它那样对确保创建。
我在这里想念什么?
这是再现错误的最少代码:
__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
,现在InitialCreate显示:
System.MissingMethodException:找不到方法:'无效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)
答案 0 :(得分:0)
我有同样的问题。 @Helder Sepulveda的评论解决了我的问题。 我遵循的步骤:
Enable-Migrations
Add-Migration InitialCreate
(或您想要的任何名称。)Update-Database
然后在我的MySQL数据库中创建表。