我已经开始了一个由Azure托管的新项目 - 我试图让它自动创建表。
我有一个模特:
public class Account
{
[Key]
[Required]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Surname { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
}
在我的Global.asax中:
Database.SetInitializer(new CreateDatabaseIfNotExists<ApplicationDbContext>());
最后是ApplicationDbContext:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
// Add custom user claims here
return userIdentity;
}
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public System.Data.Entity.DbSet<Account> Accounts { get; set; }
}
运行我的项目后,它不会创建表。或者我做错了什么我没看到?
答案 0 :(得分:1)
我相信您首先必须更新您的数据库。
在您的程序包管理器控制台中尝试此操作。
PM> Add-Migration UpdateName
它应该创建一个包含所有更改的新文件。仔细检查文件以确保它了解您尝试实现的目标。然后:
PM> Update-Database
此命令执行迁移。现在应该已经创建了新表。
答案 1 :(得分:1)
@ user3435421 是的,我认为这是正确的做法。我唯一可以添加的是原始海报需要在他/她调用Add-Migration命令之前使用 enable-migrations 命令启用迁移。您可以在此处找到与Contoso University示例相关的过程:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application