【问题标题】:Entity Framework Core 2.0 not finding migrationEntity Framework Core 2.0 未找到迁移
【发布时间】:2018-03-20 16:46:13
【问题描述】:

我有一个奇怪的问题,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 表存在,但博客表不存在。 您可能会怀疑,运行 db.SaveChanges() 会引发异常并告诉我该表不存在。

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

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

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

/最好的问候

【问题讨论】:

    标签: entity-framework-core


    【解决方案1】:

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

    所以请确保您的 DbContext 有这样的内容:

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
    
    public virtual DbSet<Blog> Blogs { get; set; }
    

    还请记住,在进行任何更改后,您需要生成新的迁移。这似乎与以前 update-database (PMC) 总是应用新更改的情况有所不同。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 多么奇怪的事情啊。我还可以看到它添加了 Microsoft.CSharp 参考,这可能就是 VS 不抱怨 cs 文件的原因。基本上这让 VB 和 F#(相信他们有同样的问题)的人没有真正的 ORM,因为我很难相信 EF6 更容易使用。那种东西真的应该在文档中作为“有限支持”。
      • 另见问题#6401#8012
      • @bricelam 没有太大关系,我怎么能打电话给context.Database.Migrate 发布OnConfiguring?我有一个动态的每租户配置,我希望在租户信息可用后生成数据库。也发布here
      猜你喜欢
      • 2018-06-08
      • 2017-10-27
      • 2019-01-18
      • 2018-07-13
      • 2018-11-05
      • 2020-03-09
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多