如何调用Identity.EntityFramework OnModelCreating

Ale*_*lex 5 c# entity-framework asp.net-identity

我正在做两个类似的项目 - 但我没有创建它们中的任何一个.

它们都具有相同的本地上下文,如下所示:

using Microsoft.AspNet.Identity.EntityFramework;

    public class LocalContext :
        IdentityDbContext
            <ApplicationUser, ApplicationRole, int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
    {
     //.....

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            AddConfigurations(modelBuilder);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在整个项目中搜索引用以OnModelCreating返回上面提到的2个实例,以及命名空间中对此方法的引用Microsoft.AspNet.Identity.EntityFramework

这些项目是使用Onion架构制作的,我使用Swagger运行REST层.

问题是,在其中一个项目中,OnModelCreating当我启动应用程序(我期望)时会调用它,而在另一个项目中,它会在用户第一次执行操作时调用.

谁能解释为什么会这样?

我假设某个地方有一个触发此调用的设置 - 但是我找不到它 - 正如我上面所说的,我已经搜索了整个项目,但找不到任何调用此方法的地方.

据我所知,两个项目之间的所有参考文献都是相同的 - 有人可以帮忙吗?

Jam*_*esT 8

在初始化数据库上下文时调用它.

如果您在启动代码中使用数据库初始化程序,那么它将会发生:

Database.SetInitializer(new CreateDatabaseIfNotExists<MyDbContext>());
Run Code Online (Sandbox Code Playgroud)

否则,它将在您第一次创建它的实例时发生:

using (var context = new MyDbContext()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)