EF Core 2 Migrate方法不在DB中创建表

时间:2018-02-12 21:09:24

标签: c# asp.net-web-api .net-core ef-migrations ef-core-2.0

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

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

        public string FirstName { get; set; }
    }
}

然后我在DbSet中添加了ApplicationDbContext

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; }
    }
}

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

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();
            }
        }
    }
}

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

2 个答案:

答案 0 :(得分:1)

您应该先迁移数据库之前添加迁移。 有两种方式:

  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

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

    dotnet ef database update
    dotnet ef migrations script
    

    详细了解MSDN

    上的dotnet ef

    确保将dotnet添加到路径中。

答案 1 :(得分:0)

我面临同样的问题,并解决了以下问题。我正在使用entityframeworkcore。 首先,从Package Manager控制台运行此命令

Update-Database -Migration 0

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

Remove-Migration

然后像这样创建迁移

Add-Migration initial_migration

最后运行更新命令

Update-Database