2016-01-01 25 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