c# - 使用 MySQL 的 Code First 不会创建表
问题描述
尝试使用实体框架和 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:找不到方法:'无效 Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuilderFactory..ctor(Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger'1,Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'。在 MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(IDiagnosticsLogger'1 记录器,IRelationalTypeMapper typeMapper)
解决方案
我遇到过同样的问题。@Helder Sepulveda 的评论解决了我的问题。我遵循的步骤:
- 打开包管理器控制台。
Enable-Migrations
Add-Migration InitialCreate
(或任何你想要的名字。)Update-Database
然后在我的 MySQL 数据库中创建了这些表。
推荐阅读
- python - How to groupby when there is a pattern by group but not an ID?
- spring - SLF4J: Class path contains multiple SLF4J bindings Spring Maven
- r - Trying to get rid of this error : cannot allocate vector of size 500 mb
- python - Getting unique values from a column with varying values in pandas and breaking up rows into multiple rows on condition
- java - 如何在抛出错误的同时返回一个空列表?
- r - Rmarkdown链接问题
- javascript - 用孩子构建 JSON
- ios - 从其他视图控制器获取电子邮件并存储在 firebase
- python - 制作一个具有 UTC+1 日期感知的字符串
- powershell-4.0 - 传递管理员凭据在 Windows PowerShell ISE 中有效,但不能在 CMD 中运行 PowerShell