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