列出迁移显示没有找到迁移,为什么?
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。
请确保满足以下条件才能使迁移正常工作;
- 迁移链接到您用于实际配置迁移的同一个 DbContext
- 包含 Microsoft.EntityFrameworkCore.Relational NuGet 包,并且与其他 EfCore NuGet 包的版本完全相同
- 使用 options.MigrationsAssembly("Example.Api")
指定包含迁移的程序集
我有一个使用 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。
请确保满足以下条件才能使迁移正常工作;
- 迁移链接到您用于实际配置迁移的同一个 DbContext
- 包含 Microsoft.EntityFrameworkCore.Relational NuGet 包,并且与其他 EfCore NuGet 包的版本完全相同
- 使用 options.MigrationsAssembly("Example.Api") 指定包含迁移的程序集