我的应用程序使用EF5和DbContext以及大约100个实体类。 对于第一个查询,初始化第一个上下文实例大约需要5秒钟,大约需要1秒钟。 创建预编译查询后,所需时间减少到4.5秒和0.1秒。
因此,视图生成似乎特别加快了第一个查询。 但是第一个上下文初始化似乎只能从预编译查询中获益。
根据我的理解,EF在运行时从实体类创建EDMX模型。 也许这会导致启动延迟。 我想尽可能多地从启动代移动到编译时。 为什么程序在每次启动时都要以相同的方式计算?
如果生成的数据依赖于例如连接字符串, 我想为每个人的依赖存储一次。 也许有一些属性包含生成的数据我可以序列化到文件并再次加载以抑制启动延迟?
当我查看数据库迁移表时,包含一个编码和压缩的EDMX。 看来这个将与当前的一个进行比较,以确定架构的变化。 要归档此,EF必须在每次启动时生成EDMX。一次又一次..... 这个我喜欢缓存以加快速度。
在运行时,当应用程序可以信任数据库模式是最新的时, 我认为EF应该只使用这个数据库存储EDMX吗?
答案 0 :(得分:0)
您正在寻找预编译的视图(EDMX的.NET表示)。通常这些视图是在运行时生成的,但您可以使用EF Power Tools将它们作为单独的项目文件在设计时生成,并将它们与项目一起构建。
迁移表包含EDMX,但除非您正在进行迁移,否则它不会影响您的性能。