我在一个大约有43k行的表上执行此操作:
MyDbContext.Stores.Load();
MyDbContext.Stores.Local.Count.Dump(); //horrible performance!通过分析器,我可以看到第一条指令触发select语句来获取所有行。实际上,第二条指令在大约12秒后返回正确的值,考虑到所有数据都应该在内存中,这并不是我所期望的。实体框架中的.Local有什么问题(或者它的真正目的是什么)?
发布于 2012-10-21 01:03:43
我认为你应该这样做:
var stores = MyDbContext.Stores.ToList();
// stores is in memory after executing .ToList()
var count = stores.Count();DbSet.Local Property
此属性返回一个ObservableCollection,其中包含当前由给定DbSet的上下文跟踪的所有未更改、已修改和已添加的对象。返回的observable集合与基础DbSet集合和上下文的内容保持同步。这意味着您可以修改可观察的集合,或者在底层DbSet集合中添加/删除实体(包括通过执行查询添加实体),并且这两个集合将被同步。
此属性通常在数据绑定应用程序中使用。
https://stackoverflow.com/questions/12990662
复制相似问题