首先剖析asp.net mvc4代码

时间:2012-09-13 11:29:28

标签: asp.net-mvc entity-framework mvc-mini-profiler

我制作了一个新的asp.net mvc4应用,然后安装了miniprofiler。

然后我启用了迁移,添加迁移后我更新了我的数据库。

使用miniprofiler我发现有3个sql查询我不知道。

我不知道这个初始化发生在哪里

 InitializeDatabase <PerformDatabaseInitialization>b__6 PerformInitializationAction PerformDatabaseInitialization

这是miniprofiler miniprofiler

的图片

这3个sql查询是什么?他们来自哪里?

1 个答案:

答案 0 :(得分:0)

这是EF迁移检查数据库是否与EF模型相同。每当您运行迁移时,EF都会在[__MigrationHistory]表中存储迁移的详细信息,以便它知道是否需要运行迁移。

  • 我对第一次查询不太确定,但我认为它正在检查是否存在 数据库中的表是使用EF生成的(这是从查看堆栈跟踪的猜测)。

  • 第二个查询只返回迁移次数。

  • 最终查询获取最新的迁移,然后进行比较 到EF模型。如果模型与数据库不同,则会抛出一个异常,说数据库已过期。

您无需担心这些问题,因为迁移检查仅在每次应用程序启动时运行一次。

如果您想了解有关数据库初始化程序的更多信息,请查看this