我正在使用这个WebApi项目,我正在使用最新版本的身份验证。 我的两个Context设置看起来像这样,一个是自动生成用于身份验证,一个是我自己的dbcontext用于其他表:
认证表的ApplicationDbContext
public class IdentityContext : IdentityDbContext<ApplicationUser>
{
public IdentityContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static IdentityContext Create()
{
return new IdentityContext();
}
}
MyDbContext
public class Context : DbContext
{
public Context()
: base("name=DefaultConnection")
{
this.Configuration.LazyLoadingEnabled = true;
this.Configuration.ProxyCreationEnabled = true;
Database.SetInitializer(new DropCreateInitializer());
this.Database.CreateIfNotExists();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//FluentApi
}
}
DropCreateInitializer
public class DropCreateInitializer : DropCreateDatabaseAlways<Context>
{
protected override void Seed(Context context)
{
// Seeding works nice here
}
}
我的问题是,只要我使用DropCreateDatabaseAlways和seed,它就不会重新创建我的表进行身份验证。我只是想不通为什么?
请帮忙!
亲切的问候,哈里斯
答案 0 :(得分:1)
您只需为Context
课程创建和设置初始值设定项。
如果您希望IdentityContext
类也始终删除并重新创建,则需要为该类实现一个额外的初始值设定项:
public class IdentityDropCreateInitializer :
DropCreateDatabaseAlways<IdentityContext>
{
protected override void Seed(Context context)
{
//Seed identity tables here
}
}
然后将其分配给IdentityContext
,如此:
public IdentityContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
Database.SetInitializer(new IdentityDropCreateInitializer());
}