我有.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
..
有什么想法吗?
答案 0 :(得分:1)
您应该先迁移数据库之前添加迁移。 有两种方式:
使用程序包管理器控制台:
Add-Migration InitialMigration
使用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
添加到路径中。
答案 1 :(得分:0)
我面临同样的问题,并解决了以下问题。我正在使用entityframeworkcore。 首先,从Package Manager控制台运行此命令
Update-Database -Migration 0
然后使用此命令删除所有迁移
Remove-Migration
然后像这样创建迁移
Add-Migration initial_migration
最后运行更新命令
Update-Database