我想使用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; }
}
然后我运行这些命令:
add-migrations second
更新的数据库
第二类迁移的Up
和Down
方法都是空的!!并且没有表添加到数据库中。
上下文
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);
}
}
所以我需要知道
答案 0 :(得分:2)
您似乎忘了告诉Entity Framework您要添加的新表(DbSet<Invitation>
)
添加完成后,Entity Framework应分别在Migration脚本中添加要添加的表。
总之,您需要添加以下行:
public DbSet<Invitation> Invitations { get; set; }
和/或
public IDbSet<Invitation> Invitations { get; set; }
并运行另一个迁移脚本。
答案 1 :(得分:2)
尝试将以下内容添加到ApplicationContext类
中public DbSet<Invitation> Invitations { get; set; }
然后跑步;
Enable-Migration
Add-Migration note_of_changes
Update-Database
答案 2 :(得分:1)
我认为您需要创建初始迁移。如果这是您的第一次迁移(请注意,这将清除您现有的迁移历史记录,因此只有在您愿意放弃现有的迁移历史记录时才会使用)
DbContext
中删除对新表的引用)。请注意,-IgnoreChanges
可能会使此步骤变得多余,但我无法肯定地说。现在启用迁移(在包管理器控制台中)
Enable-Migrations
然后创建初始迁移。这将创建一个与现有模式匹配的迁移与空方法
Add-Migration Initial –IgnoreChanges
Update-Database
然后使用新的表格参考更新DbContext
并进行所需的任何其他更改
Add-Migration MyChanges
Update-Database
这应该将更改应用于数据库。如果您需要,可以使用一些more info over at MSDN。