2016-01-01 24 views
1

我剛剛創建了一個模型,我想創建生成遷移新表

namespace Ability.Models 
{ 
    public class Skill 
    { 
     [key] 
     public int ID { get; set; } 
     public string SkillName { get; set; } 

     public virtual List<Teacher> Teachers { get; set; } 
    } 

    public class Teacher 
    { 
     [key] 
     public int ID { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public string Campus { get; set; } 

     public virtual List<Skill> Skills { get; set; } 
    } 

    public partial class AbilityDbContext : DbContext 
    { 
     public AbilityDbContext() 
       : base("name= DefaultConnection") 
     { 
     } 
     public virtual DbSet<Teacher> Teachers { get; set; } 
     public virtual DbSet<Skill> Skills { get; set; } 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<Teacher>() 
      .HasMany(s => s.Skills) 
      .WithMany(c => c.Teachers); 
      base.OnModelCreating(modelBuilder); 
     } 
    } 
} 

但是我不知道我怎麼能生成這些新表的一些遷移的數據庫結構。我以爲它會給我一個消息,當我嘗試更新數據庫,以便我可以使用添加遷移,但它只是說

沒有掛起顯式遷移。

所以我的問題是,我怎麼讓實體框架爲我做的工作,並創建正確的遷移?

回答

0

運行在包管理器控制檯Tools菜單項下面的命令從Visual Studio纔能有遷移工作

enable-migrations 
add-migration AddTeacher 
add-migration AddSkill 
update-database 

而且,如果這些實體添加新的,那麼你需要用Table屬性一樣來裝點他們

[System.ComponentModel.DataAnnotations.Schema.Table("Skills")] 
    public class Skill 
    { 
     [key] 
     public int ID { get; set; } 
     public string SkillName { get; set; } 

     public virtual List<Teacher> Teachers { get; set; } 
    } 

    [System.ComponentModel.DataAnnotations.Schema.Table("Teachers")] 
    public class Teacher 
    { 
     [key] 
     public int ID { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public string Campus { get; set; } 

     public virtual List<Skill> Skills { get; set; } 
    } 
+0

這只是創建空的遷移文件。 – Nicolas

+1

@NicolasDecroos,我的不好;由於您已經創建實體,因此您不需要以前的這些命令。請參閱編輯答案。 – Rahul

+0

代碼中存在拼寫錯誤,它是「DataAnnotations」,但是.Table以紅色下劃線表示該名稱空間不存在於「System.ComponentModel.DataAnnotations」中 – Nicolas