我正在使用延迟加载和预先生成的视图。我创建了上下文。我得到了我所有的对象,大约6000多个导航被填充在大约3秒内。没问题。我第一次更新所有对象(4分钟...)我第二次更新所有对象(6秒)
我怀疑在后台运行的lazyloading和更新一定是在做一些使他重新循环或EF启动仍在加载的事情。
我用的是EF 6.1,数据是分层的。
数据库大小约为30个表中的6000行。
EF模型为DatabaseFirst。
有什么解决方法吗?
发布于 2014-06-13 03:38:18
如果您关心的是两次更新之间的时间差,我怀疑第二次更新运行得更快,因为修改的对象更少。
发布于 2014-06-13 03:42:53
为什么需要将所有对象加载到您的上下文中?您的上下文的生命周期是什么?
一般建议您为单个web请求或单个windows窗体创建单机版上下文。
您将进一步看到许多使用using语句的示例,其中上下文的生命周期被故意保持得非常短。让上下文存活太长可能会增加内存使用量,并增加并发问题的可能性。您的数据库和其他层也执行自己的缓存。
最后,延迟加载是很好的,只要你不知道你是否需要一些东西。如果您知道将需要相关记录,并且希望避免多次往返,则可以考虑显式加载数据。
https://stackoverflow.com/questions/24192552
复制相似问题