我正在使用Asp.Net Mvc应用程序,然后我想使用我创建的自定义数据库初始化程序类来播种数据库。
所以这是我的DbContext
:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser> {
public ApplicationDbContext()
: base("defaultConnection", throwIfV1Schema: false) {
}
static ApplicationDbContext() {
Database.SetInitializer(new ApplicationDbInitializer());
}
这是我的ApplicationDbInitializer
课程:
public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext> {
protected override void Seed(ApplicationDbContext context) {
InitializeIdentityForEF(context);
base.Seed(context);
}
public static void InitializeIdentityForEF(ApplicationDbContext db) {
// Create Role Admin if it does not exist
// Add user admin to Role Admin if not already added
// And some more initializing stuff
}
}
注意:我也使用Migrations
。
所以当我尝试使用命令Update-Database
更新和播种我的数据库时(即使我手动删除了数据库),正在创建数据库但它没有播种它。
如果我做错了什么或者有其他方式我会感谢您的帮助。
答案 0 :(得分:1)
这听起来与this question中的问题相同。
因此,种子代码只会在您创建ApplicationDbContext
。
将这样的代码添加到应用程序启动中:
var ctx = new ApplicationDbContext();
ctx.Database.Initialize(true);
然后,您的数据库将在下次启动应用时播种。
或者,如果要使用Update-Database
命令为数据库设定种子,则使用不同的 Seed
方法。您可以看到示例here。