调用DbContext.Database.CompatibleWithModel的性能很慢

时间:2016-11-14 15:58:33

标签: entity-framework

我们正在运行EntityFramework(6.1.3)Code-First,在SQL Azure上的小型数据库(490 MB)上进行大约40次迁移。

在扩展我们的发布过程时,通过检查调用Database.CompatibleWithModel来验证数据库是否是最新的,我发现我们的测试实例变得相当慢:这个调用最多需要2分钟才能完成。在我们的生产环境和本地,这不到一秒钟!

我在本地运行了一个SQL分析器作业,发现只有3个语句在数据库上被触发:

  1. 数据库是否存在?
  2. 数据库中有多少迁移?
  3. 上次迁移的migrationId和模型是什么?
  4. 当我在慢速环境中运行这些语句时,它会在一秒钟内完成,就像生产一样。这表明数据库不是问题。

    有没有人有想法寻找性能缓慢的原因? EF是否在运行时本地计算散列,然后根据数据库中的模型进行检查? 我可以找出哈希需要多长时间?

    我已经检查了Azure数据库上的设置以检查数据库的CompatibilityLevel,在找到EDMX编辑器使用新基数估算器的速度很慢的帖子后,但此设置似乎没有效果。

0 个答案:

没有答案