我们目前在使用Entity Framework的懒加载时遇到了“内存不足异常”。出现这种异常的原因是Linq查询加载了大量数据,而后期使用懒加载来加载导航属性。但由于我们没有使用“NoTrackingChanges”,因此Entity Framework缓存很快就会增加,导致内存不足错误。
我对EF的理解是,除非您要更新查询返回的对象,否则应始终在查询上使用“NoTrackingChanges”。
然后我尝试使用“NoChangeTracking”:
但是我遇到了以下错误:
System.InvalidOperationException:当使用NoTracking合并选项返回对象时,只有在EntityCollection或EntityReference不包含对象时才能调用Load方法。
我对EF的理解是,除非您要更新查询返回的对象,否则应始终在查询上使用“NoTrackingChanges”。
然后我尝试使用“NoChangeTracking”:
var account = _dbcontext.Account
.AsNoTracking()
.SingleOrDefault(m => m.id == 1);
var contactName = account.Contact.Name
但是我遇到了以下错误:
System.InvalidOperationException:当使用NoTracking合并选项返回对象时,只有在EntityCollection或EntityReference不包含对象时才能调用Load方法。
Configuration.ProxyCreationEnabled
设为false
解决了我的问题。https://dev59.com/kl3Va4cB1Zd3GeqPC7Fn - Mahbubur Rahman