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

时间:2015-12-03 18:49:12

标签: c# entity-framework ef-migrations

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

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

以防链接消失。 Ryan链接到的github问题表示在调用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

答案 1 :(得分:2)

我发现问题与我的项目结构有关。我的DbContext在一个项目中定义,而我的迁移是在我的其他项目中创建的。这似乎没有开箱即用,但如何使这项工作详述如下:https://github.com/aspnet/EntityFramework/issues/3840

答案 2 :(得分:0)

我也有同样的问题。

dnx ef migrations list

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

答案 3 :(得分:0)

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

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

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