代码之家  ›  专栏  ›  技术社区  ›  Scottingham

Linq关联的实体集合是否自动设置了键?

  •  0
  • Scottingham  · 技术社区  · 11 年前

    我有一个实体集,它是一个用于调查的会话。响应集合有一个导航属性,这些响应也被键控到Question实体(使用DB中的外键关系)。

    我很容易通过简单的操作调出回复集合

    session.Responses
    

    这会返回一个枚举列表,在大多数情况下这是可以的。

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

    如果我想从会话的响应集合中选择一个基于项的特定响应,那么考虑到它是一个集合,它是查找操作还是扫描操作?回答和问题之间的FK关系是否得到了充分利用?

    如果不是, 明智的做法是在Session Partial类中创建一个Keyed Dictionary,它接受它的Response集合并将其与Question Keys配对? 这样,就可以直接寻求每个请求问题的确切答复。

    1 回复  |  直到 11 年前
        1
  •  0
  •   Keith Payne    11 年前

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

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