Linq关联实体集合是否自动键入?

时间:2013-09-06 17:51:23

标签: c# linq entity-framework partial-classes

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

通过简单地执行

,我很容易调出回复集合
session.Responses

返回一个枚举列表,在大多数情况下都可以。

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

如果我想根据一个Item从Session的Response集合中选择一个特定的响应,假设它是一个集合,那么它是一个搜索还是扫描操作?响应和问题之间的FK关系是否得到充分利用?

如果没有,在Session Partial类中创建一个Keyed Dictionary是明智的,它会使用它的Response集合并将其与Question Keys配对吗?这样,它会直接寻求产生每个请求问题的确切响应。

1 个答案:

答案 0 :(得分:0)

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

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