列出迁移显示没有找到迁移,为什么?

Listing migrations shows no migrations found, why?

我有一个使用 Entity Framework 7 RC1 的 ASP.NET 项目。我正在尝试使用迁移来创建我的数据库。我已经创建了一个初始迁移,并在我的项目中看到了生成的代码。创建迁移后,我立即 运行 dnx ef migrations list 命令,但它说没有找到迁移。此外,如果我尝试应用迁移,它看起来不像是在生成的迁移代码中创建了表——不过它确实创建了一个数据库。

有什么想法吗?

我发现问题与我的项目结构有关。我的 DbContext 是在一个项目中定义的,而我的迁移是在我的另一个项目中创建的。这似乎不是开箱即用的,但这里详细介绍了如何进行这项工作:https://github.com/aspnet/EntityFramework/issues/3840

以防万一 link 消失。 github Ryan links 说要在调用 UseSqlServer 后添加 .MigrationsAssembly("[project]") 的问题。像这样。

services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ExampleContext>(options => 
    options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]).
    MigrationsAssembly("Example.Api"));

或者现在更好的是你可以使用 --targetProject per

https://github.com/aspnet/EntityFramework/wiki/Design-Meeting-Notes-(October-28,-2015)

cd src\MyApp
dnx ef migrations add MyMigration --targetProject MyApp.Data

这会将迁移添加到 DbContext 所在的 TragetProject

我也遇到了同样的问题。

dnx ef migrations list

显示空列表。然后我意识到我将 "db classes" 的一部分移到了另一个项目中。 如何正确执行此操作的解决方案在这里: http://www.jerriepelser.com/blog/moving-entity-framework-7-models-to-external-project 谢谢杰里 ;)

我也有这个问题。对我来说 options.MigrationsAssembly("Example.Api") 是解决方案的一部分。因为我正在进行集成单元测试,使用注入的自定义模拟 DbContext 重新创建数据库,所以仍然没有返回任何迁移。这是因为迁移链接到 database/infrastructure 层中的原始 DbContext,而不是我在单元测试中的模拟 DbContext。

请确保满足以下条件才能使迁移正常工作;

  1. 迁移链接到您用于实际配置迁移的同一个 DbContext
  2. 包含 Microsoft.EntityFrameworkCore.Relational NuGet 包,并且与其他 EfCore NuGet 包的版本完全相同
  3. 使用 options.MigrationsAssembly("Example.Api")
  4. 指定包含迁移的程序集