Table 未使用 EF 代码优先方法进行映射

Table not mapped using EF code first approach

我想使用 EF code first approach。我添加了数据库并生成了 tables 。然后我添加了这个 class

  public class Invitation
    {

      
        [Key]
        public int Id { get; set; }

        [DefaultValue(false)]
        public bool State { get; set; }

        public string Mail { get; set; }

        public string Tel { get; set; }

        public string Name { get; set; }

        public string Qr_code { get; set; }
  
    }

我运行这些命令然后:

add-migrations second

update-database

第二个class迁移的UpDown方法是空的!!并且没有 table 被添加到数据库中。

上下文

 public class ApplicationContext: IdentityDbContext<ApplicationUser>
    {
         public ApplicationContext()
            :base("DefaultConnection")
        {
            Database.SetInitializer<ApplicationContext>(new CreateDatabaseIfNotExists<ApplicationContext>());
        }

        public static ApplicationContext Create()
        {
            return new ApplicationContext();
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }

所以我需要知道

  1. 这个问题的原因是什么?
  2. 我该如何解决?

您似乎忘记告诉 Entity Framework 您想要添加的新 table (DbSet<Invitation>)

添加后,Entity Framework 应分别在迁移脚本中添加要添加的 table(s)。

总而言之,您需要添加这一行:

public DbSet<Invitation> Invitations { get; set; }

and/or

public IDbSet<Invitation> Invitations { get; set; }

和运行另一个迁移脚本。

我认为您需要创建初始迁移。如果这是您的第一次迁移(请注意,这将清除您现有的迁移历史记录,因此仅在您愿意放弃现有的迁移历史记录时使用)

  1. 删除解决方案中的 Migrations 文件夹
  2. 删除您的更改(从您的 DbContext 中删除对新 table 的引用)。请注意,-IgnoreChanges 很可能会使此步骤变得多余,但我不能肯定地说。
  3. 从您的数据库中删除 MigrationHistory table(它很可能不存在,但如果存在,您可以继续删除它)

现在启用迁移(在包管理器控制台中)

Enable-Migrations

然后创建您的初始迁移。这将创建一个迁移,使您的现有架构与空方法相匹配

Add-Migration Initial –IgnoreChanges
Update-Database

然后使用新的 table 参考更新您的 DbContext 并进行任何其他您需要做的更改

Add-Migration MyChanges
Update-Database

这应该将更改应用于数据库。一些 more info over at MSDN 如果你需要的话。

尝试将以下内容添加到您的 ApplicationContext class

public DbSet<Invitation> Invitations { get; set; }

然后运行;

Enable-Migration
Add-Migration note_of_changes
Update-Database