简体   繁体   English

EntityFramework Db初始化

[英]EntityFramework Db Initialization

I have two dbcontext both connected to the same database. 我有两个dbcontext都连接到同一个数据库。

One of them I initialise using migrations and have created the database. 其中之一是我使用迁移进行初始化并创建了数据库。

The other has a database intializer using Database.SetInitializer 另一个具有使用Database.SetInitializer的数据库初始化器

Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());


 public class ApplicationDbInitializer : DropCreateDatabaseAlways<ApplicationDbContext>//DropCreateDatabaseIfModelChanges<ApplicationDbContext> 
    {
        protected override void Seed(ApplicationDbContext context) {
            InitializeIdentityForEF(context);
            base.Seed(context);
        }
}

InitializeIdentityForEF method creates a user with password and role. InitializeIdentityForEF方法创建具有密码和角色的用户。

My problem is that even though Database.SetInitializer method is getting called on every application run, the method Seed in ApplicationDbInitializer class is not getting called and in turn my tables and default user is not getting generated. 我的问题是,即使在每次运行的应用程序上都调用Database.SetInitializer方法,但ApplicationDbInitializer类中的Seed方法却没有得到调用,因此我的表和默认用户也没有得到生成。

Any help is sincerely appreciated.. 真诚的感谢您的帮助。

Thanks 谢谢

After calling: 致电后:

Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());

You need to call: 您需要致电:

var context = new ApplicationDbContext();
context.Database.Initialize(true);

This is how I did it. 这就是我做的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM