我正在尝试通过Json(使用Ajax)返回应用程序列表到应用程序。我已经尝试过两种方式:
使用选择
var query = (from ad in db.AddressNamePlaces.AsNoTracking()
where ad.cepPlace == zipCode.Replace("-", string.Empty)
select ad ).ToList();
.Where(Expression)方法:
var query = db.AddressNamePlaces.AsNoTracking().Where(l => l.cepPlace == zipCode.Replace("-", string.Empty)).ToList();
它们都很好。
注意事项:AddressNamePlace中的相关表具有超过770k的记录,如果我使用不带.AsNoTracking()方法,则应用程序将向Json返回OutOfMemoryException。实体框架为每条记录实例化了很多对象,而.AsNoTracking()方法则避免使用它。
如果我使用上面的查询,我收到以下错误: “当使用NoTracking合并选项返回对象时,只能在EntityCollection或EntityReference不包含对象时调用Load。”
那么,这里有什么不对?
答案 0 :(得分:1)
我找到了这种情况的解决方案。在进行查询之前,我需要将属性“ProxyCreationEnabled”设置为false,代码:
db.Configuration.ProxyCreationEnabled = false;
var query = db.AddressNamePlaces.AsNoTracking().Where(l => l.cepPlace == zipCode.Replace("-", string.Empty)).ToList();