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当我启动应用程序(我期望)时会调用它,而在另一个项目中,它会在用户第一次执行操作时调用.
谁能解释为什么会这样?
我假设某个地方有一个触发此调用的设置 - 但是我找不到它 - 正如我上面所说的,我已经搜索了整个项目,但找不到任何调用此方法的地方.
据我所知,两个项目之间的所有参考文献都是相同的 - 有人可以帮忙吗?
在初始化数据库上下文时调用它.
如果您在启动代码中使用数据库初始化程序,那么它将会发生:
Database.SetInitializer(new CreateDatabaseIfNotExists<MyDbContext>());
Run Code Online (Sandbox Code Playgroud)
否则,它将在您第一次创建它的实例时发生:
using (var context = new MyDbContext()) {
...
}
Run Code Online (Sandbox Code Playgroud)