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