簡體   English   中英

表格未使用EF代碼優先方法進行映射

[英]Table not mapped using EF code first approach

我想先使用EF code first approach 我添加了數據庫,並生成了表。 然后我加了這個課

  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; }

    }

我然后運行這些命令:

第二遷移

更新數據庫

第二類遷移的UpDown方法為空! 並且沒有表添加到數據庫。

上下文

 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您要添加的新表( DbSet<Invitation>

添加此選項后,實體框架應分別添加要在“遷移”腳本中添加的表。

總之,您需要添加以下行:

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

和/或

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

並運行另一個遷移腳本。

嘗試將以下內容添加到您的ApplicationContext類中

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

然后運行;

Enable-Migration
Add-Migration note_of_changes
Update-Database

我認為您需要創建一個初始遷移。 如果這是您的首次遷移(請注意,這將清除您現有的遷移歷史記錄,所以僅在您樂於丟棄現有的遷移歷史記錄時使用)

  1. 在解決方案中刪除您的遷移文件夾
  2. 刪除更改(從DbContext刪除對新表的DbContext )。 請注意, -IgnoreChanges可能會使此步驟變得多余,但我不能肯定地說。
  3. 從數據庫中刪除MigrationHistory表(該表很可能不存在,但是可以刪除它)

現在啟用遷移(在程序包管理器控制台中)

Enable-Migrations

然后創建您的初始遷移。 這將創建一個與您現有模式與空方法匹配的遷移

Add-Migration Initial –IgnoreChanges
Update-Database

然后使用新的表引用更新DbContext並進行其他更改

Add-Migration MyChanges
Update-Database

那應該將更改應用到數據庫。 如果需要,可以在MSDN上獲取更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM