我有一个使用表单身份验证的 MVC4 互联网应用程序。
开箱即用的UserProfile
模型是在 Account 模型文件中创建的,我已将其移至其自己的文件并DbSet<UserProfile
在我的文件中调用 > DbContext
。我希望 EF 创建一个 2 表数据库,UserProfiles 和 Stories。
public class MySocialStoriesDb : DbContext
{
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<Story> Stories { get; set; }
}
故事模型
[Table("Stories")]
public class Story
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int StoryId { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual UserProfile User { get; set; }
public string File { get; set; }
public DateTime DateCreated { get; set; }
public string Name { get; set; }
}
用户档案模型
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string EmailAddress { get; set; }
public string UserDirectory { get; set; }
public bool Paid { get; set; }
public DateTime DatePaid { get; set; }
public string PaymentId { get; set; }
}
我已经从包管理器运行 Enable-Migrations 并允许自动迁移和允许数据丢失。生成的 InitialCreate 文件似乎只创建了 User Profile 表,它的代码中没有任何 Story 表的内容。
我将以下行添加到 Global.asax
Database.SetInitializer(new Models.IntializeMySocialStoriesDb());
如果我现在更改模型,则数据库不会更改。如果我手动删除数据库并将其更改InitializeMySocialStoriesDb
为 DropCreateDatabaseAlways 然后运行应用程序,则不会创建数据库。
我只是想知道我错过了什么。