代码之家  ›  专栏  ›  技术社区  ›  Niels Bosma

Linq2Sql:如何管理大型结果集?

  •  0
  • Niels Bosma  · 技术社区  · 14 年前

    假设我有一个结果集非常大的查询(+100.000行),我需要遍历并执行更新:

    var ds = context.Where(/* query */).Select(e => new { /* fields */ } );
    
    foreach(var d in ds)
    {
    //perform update
    }
    

    我可以接受这个过程需要很长时间来执行,但我的服务器内存有限。

    使用Skip和Take进行部分更新是否更好?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Community datashaman    7 年前

    最好的方法是使用Skip和Take yes,并确保在每次更新之后,您都处理DataContext(通过使用)

    你可以看看我的问题,有一个类似的问题和一个很好的解决方案: Out of memory when creating a lot of objects C#

        2
  •  1
  •   TomTom    14 年前

    • 所有的结果都存入记忆。
    • 完成后,您的更改会被写出来一次。

    这将是缓慢的,它将-嗯-使用吨的内存。给有限的内存-不可能。

    ORM不适合大规模操作。

        3
  •  1
  •   Remotec    14 年前

    不能使用存储过程一次性更新所有内容吗?