EF Core 2 迁移方法不在数据库中创建表

EF Core 2 Migrate method doesn't create tables in DB

我有 .netcore 2.0 应用 N-Tier Architecture,我已经在 Data Access Layer 中实现了 ApplicationDbContext...现在我正在尝试添加新的 Entities ,例如我创建了实体 Test2:

namespace MyProject.Domain
{
    public class Test2
    {
        public int Id { get; set; }

        public string FirstName { get; set; }
    }
}

然后我在ApplicationDbContext中添加了DbSet:

namespace MyProject.Infrastructure.Implementation.MySql.Contexts
{
    public class ApplicationDbContext : DbContext, IApplicationDbContext
    {
        private readonly IConfiguration _configuration;

        public ApplicationDbContext(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySql(
                _configuration.GetConnectionString("MySql"));
        }

        public DbSet<Test> Test { get; set; }

        public DbSet<Test2> Test2 { get; set; }
    }
}

然后我在BaseEnfine.cs中调用了.Migrate()方法:

namespace MyProject.Infrastructure.Implementation.MySql
{
    public class BaseEngine : IBaseEngine
    {
        private readonly ApplicationDbContext _context;

        protected ApplicationDbContext Db => _context;

        protected BaseEngine(ApplicationDbContext context)
        {
            _context = context;

            if (!_context.Database.EnsureCreated())
            {
                _context.Database.Migrate();
                _context.Database.EnsureCreated();
            }
        }
    }
}

但是当我刷新数据库时没有table Test2.. 有什么想法吗?

您应该先添加迁移,然后再迁移您的数据库。 有两种方式:

  1. 使用包管理器控制台:

    Add-Migration InitialMigration

  2. 使用 dotnet CLI:

    将以下代码添加到您的 .csproj 文件中:

    <ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" /> </ItemGroup>

    cd 使用命令行和 运行

    到您的项目目录

    运行 dotnet ef migrations add InitialMigration

在大多数情况下,最好不要在您的应用中应用迁移。您可以使用 CLI 迁移数据库或生成迁移脚本。

dotnet ef database update
dotnet ef migrations script

MSDN

上阅读有关 dotnet ef 的更多信息

确保 dotnet 已添加到 PATH。

我遇到了同样的问题,解决方法如下。我正在使用 entityframeworkcore。 首先 运行 来自程序包管理器控制台的此命令

Update-Database -Migration 0

然后使用此命令删除所有迁移

Remove-Migration

然后像这样创建迁移

Add-Migration initial_migration

最后运行更新命令

Update-Database