我有一个包含多个xml字段的数据表。我正在使用EF来获取数据:
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。
有什么想法吗?
答案 0 :(得分:-1)
AsNoTracking()方法返回IQueryable但如果要在Where子句中使用ToString()方法,则必须将IQueryable转换为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();