我们的应用程序使用基于实体框架 5.0 的代码优先数据库。该模型包含大约 100 种类型,它们映射到大约 70 个表,总共有几千条记录。我们需要在应用程序启动时加载大部分数据。为此,我们只需调用Dbset<>.Load()
加载所有记录。
加载时间似乎很长,这导致我们进行了一些改进,例如预生成的视图、联合类型和删除冗余。
在上面之后,我们使用了一个分析器来检查所有时间都浪费在了哪里,发现只有不到 10% 的加载时间用于 SQL,而大约 70% 用于Activator.CreateInstance()
(这种使用是可以理解的,因为 Entity Framework 没有“知道”我们的实体类型)。
然后我们尝试使用Include()
仅加载所需的数据,但是,这增加了加载时间(从我读到的内容,因为.Include()
对 1-2 个属性有好处),显然不符合我们的目的。
这是实体框架的限制还是有其他方法可以提高性能?