【发布时间】:2013-11-02 19:47:53
【问题描述】:
我的应用程序使用带有 DbContext 的 EF5 和大约 100 个实体类。 初始化第一个上下文实例大约需要 5 秒,第一个查询大约需要 1 秒。 创建预编译查询后,所需时间减少到 4.5 秒和 0.1 秒。
因此,视图生成似乎特别加快了第一次查询的速度。 但第一次上下文初始化似乎只能从预编译查询中获益。
据我了解,EF 在运行时从实体类创建一个 EDMX 模型。 也许这会导致启动延迟。 我想尽可能多地从启动生成转移到编译时间。 为什么程序在每次启动时都应该计算相同的东西?
如果生成的数据依赖于例如连接字符串, 我想为每个单独的依赖项存储一次。 也许有一些包含生成数据的属性我可以序列化到一个文件并再次加载它以抑制启动延迟?
当我查看数据库迁移表时,其中包含一个编码和压缩的 EDMX。 似乎这一项将与当前一项进行比较以确定架构更改。 要存档此文件,EF 必须在每次启动时生成一个 EDMX。一次又一次..... 我喜欢缓存这个以加快速度。
在运行时,当应用程序可以信任数据库架构是最新的时, 我认为 EF 无论如何都应该简单地使用这个数据库存储的 EDMX?
【问题讨论】:
标签: performance entity-framework edmx