实体框架Core 2.0未找到迁移

时间:2017-10-09 12:55:59

标签: entity-framework-core

我遇到一个奇怪的问题,即EF Core 2.0无法识别我的迁移

在PM中运行Add-Migration命令时,会在MyFirstMigration文件夹中创建Migrations个类。

背景:

Protected Overrides Sub OnConfiguring(optionsBuilder As DbContextOptionsBuilder )
    optionsBuilder.UseSqlite("Data Source=blogging.db")
End Sub

PM代码:

PM> Add-Migration MyFirstMigration 
To undo this action, use Remove-Migration.
PM> Update-Database
No migrations were applied. The database is already up to date.
Done.

当我检查dababase文件时, __ EFMigrationsHistory 表存在,但不存在Blog表。 您可能怀疑,运行db.SaveChanges()会抛出异常并告诉我该表不存在。

运行 db.Database.Migrate()什么都不做,但是当我删除db文件并运行 db.Database.EnsureCreated()时,会创建正确的数据库。

我必须指出__EMMigrationsHistory表是空的,所以我可以在Update-Database之后立即创建下一次迁移,它将生成与第一个完全相同的代码。

我在WPF上使用VS 15.3.5和.Net 4.6.1。

/祝你好运

2 个答案:

答案 0 :(得分:3)

是因为Add-Migration正在向您的VB.NET项目添加C#文件吗?您可以将它们添加到单独的C#项目中,从DbContext程序集中引用它,然后将OnConfiguring更新为以下内容。

optionsBuilder.UseSqlite("Data Source=blogging.db", Sub(x) x.MigrationsAssembly("MyCSharpProject"))

答案 1 :(得分:0)

我有这个问题,我的迁移不包含任何实体,然后我注意到一些不太明显的事情。 DbContext类查看它自己的成员变量,然后将任何fluent / attribute模型属性应用于生成的迁移。

因此,请确保您的DbContext具有以下内容:

git rebase

还要记住在进行任何需要生成新迁移所需的更改之后。这似乎与from django.http import Http404 @csrf_exempt def paypal_ipn_listener(request): if request.method != 'POST': raise Http404('some error') print request.body (PMC)始终应用新更改之前的工作略有不同。