我有一个使用Entity Framework 7 RC1的ASP.NET项目。我正在尝试使用迁移来创建我的数据库。我已经创建了一个初始迁移,并在我的项目中查看生成的代码。创建迁移后,我立即运行dnx ef migrations list
命令,但它表示没有找到迁移。此外,如果我尝试应用迁移,它看起来不像创建生成的迁移代码中的表 - 但它确实创建了一个数据库。
有什么想法吗?
答案 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。
请确保满足以下条件,迁移才能正常工作;