0

我有一个实体集,它是一个调查会话。响应集合有一个导航属性,这些响应集合也以问题实体为键(使用数据库中的外键关系)。

我很容易通过简单地调用响应集合

session.Responses

这将返回一个枚举列表,这在大多数情况下都很好。

但是,对于大型数据集,我遇到了一个概念问题。

如果我想根据一个项目从会话的响应集合中选择一个特定的响应,假设它是一个集合,它是查找还是扫描操作?Response 和 Question 之间的 FK 关系是否得到利用?

如果不是,那么在 Session Partial 类中创建一个 Keyed Dictionary 来获取它的 Response 集合并将其与 Question Keys 配对是否明智? 这样,将直接寻求对每个请求的问题产生准确的响应。

4

1 回答 1

0

LINQ over objects 使用Enumerators,它“扫描”集合。

编辑:您最好的选择是在数据库中进行尽可能多的逻辑连接和过滤。当您使用 EF 查询表达式的结果加载字典时,将在数据库上执行查询并将结果放入内存中。此时,您处理的不再是 IQueryable 表达式,而是一组 IEnumerable 对象。Dictionary 上的其他 LINQ 表达式是对象上的 LINQ。

于 2013-09-06T18:08:58.843 回答