我制作了一个新的asp.net mvc4应用,然后安装了miniprofiler。
然后我启用了迁移,添加迁移后我更新了我的数据库。
使用miniprofiler我发现有3个sql查询我不知道。
我不知道这个初始化发生在哪里
InitializeDatabase <PerformDatabaseInitialization>b__6 PerformInitializationAction PerformDatabaseInitialization
这是miniprofiler
这3个sql查询是什么?他们来自哪里?
答案 0 :(得分:0)
这是EF迁移检查数据库是否与EF模型相同。每当您运行迁移时,EF都会在[__MigrationHistory]
表中存储迁移的详细信息,以便它知道是否需要运行迁移。
我对第一次查询不太确定,但我认为它正在检查是否存在 数据库中的表是使用EF生成的(这是从查看堆栈跟踪的猜测)。
第二个查询只返回迁移次数。
最终查询获取最新的迁移,然后进行比较 到EF模型。如果模型与数据库不同,则会抛出一个异常,说数据库已过期。
您无需担心这些问题,因为迁移检查仅在每次应用程序启动时运行一次。
如果您想了解有关数据库初始化程序的更多信息,请查看this。