我们使用实体框架,每当我们在数据库实体的子集合上使用Count()时,这会导致严重的性能问题。 作为解决方法,我使用了数据上下文的根集合的连接。然后生成的sql查询使用所需的COUNT(*)。但这个解决方案真的很难看。
慢查询是:
var booked = erf.Sessions.All(s => s.Exams.All(e => e.Candidates.Count() >= e.CandidatesExpected))
答案 0 :(得分:1)
如果通过"子集合"你的意思是你的实体中定义的Count()
类型的导航属性,然后它是Linq-to-Entities(不是你指定的Linq-to-Sql)。因此,Enumerable
方法只是listView = (ListView) findViewById(R.id.list_data);
ArrayList<Contact> mList = new ArrayList<>();
mList = DB.getAllContacts();
类中定义的扩展方法,它在已经实现到内存中的实体上执行。要获得您期望的结果,您需要在DbSet查询上使用Count()。