我遇到一个奇怪的问题,即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。
/祝你好运
答案 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)始终应用新更改之前的工作略有不同。