4

我的应用程序将 EF5 与 DbContext 和大约 100 个实体类一起使用。初始化第一个上下文实例大约需要 5 秒,第一个查询大约需要 1 秒。创建预编译查询后,所需时间减少到 4.5 秒和 0.1 秒。

因此,视图生成似乎特别加快了第一次查询。但是第一次上下文初始化似乎只能从预编译查询中受益。

据我了解,EF 在运行时从实体类创建一个 EDMX 模型。也许这会导致启动延迟。我想尽可能多地从启动生成转移到编译时间。为什么程序在每次启动时都应该以相同的方式计算事物?

如果生成的数据依赖于例如连接字符串,我想为每个单独的依赖项存储一次。也许有一些包含生成数据的属性我可以序列化到一个文件并再次加载它以抑制启动延迟?

当我查看数据库迁移表时,其中包含一个编码和压缩的 EDMX。似乎这一项将与当前一项进行比较以确定架构更改。要存档此文件,EF 必须在每次启动时生成一个 EDMX。一次又一次......我喜欢缓存这个以加快速度。

在运行时,当应用程序可以信任数据库模式是最新的时,我认为 EF 应该简单地使用这个数据库存储的 EDMX 吗?

4

1 回答 1

0

您正在寻找预编译视图(EDMX 的 .NET 表示)。通常这些视图是在运行时生成的,但您可以使用EF Power Tools在设计时将它们生成为单独的项目文件,并将它们与您的项目一起构建。

迁移表包含 EDMX,但除非您进行迁移,否则它不会影响您的性能。

于 2013-11-03T06:44:12.663 回答