EF-查询大型数据集导致内存不足异常

本文关键字:内存不足 异常 数据集 查询 大型 EF- | 更新日期: 2023-09-27 18:01:00

我有一个包含多个xml字段的数据表。我使用EF来获取数据,使用where:

List<tblMSASAN> msa = ctx.tblMSASANs.Where(s => s.LCMGSupportLevel != "decommissioned").ToList();

然后使用foreach迭代列表,将xml字段拉入xmldocument,并查询每个节点更新一个属性,然后保存上下文。

但是,数据集太大,我遇到了内存不足的异常。因此,我需要能够首先查询xml以返回较小的数据集。

List<tblWinServer> servers = ctx.tblWinServers.AsNoTracking().Where(s => s.LCMGSupportLevel != "decommissioned" && ( Convert.ToString(s.TapeDrives).Contains("Calyx") ||Convert.ToString(s.DiskShelves).Contains("Calyx"))).ToList();

但这对于NotSupportedException不起作用。

有什么想法吗?

EF-查询大型数据集导致内存不足异常

AsNoTracking((方法返回IQueryable,但如果要在Where子句中使用ToString((方法,则必须将IQueryaable转换为IEnumerable:

List<tblWinServer> servers = ctx.tblWinServers.AsNoTracking().AsEnumerable().Where(s => s.LCMGSupportLevel != "decommissioned" && ( Convert.ToString(s.TapeDrives).Contains("Calyx") ||Convert.ToString(s.DiskShelves).Contains("Calyx"))).ToList();