我创建了一个读取 CSV
文件的应用程序,创建了一个 DataServiceContext
并将数据批量插入到我的远程 OData
API 服务器。
然而,在导入 30,000
记录 5 分钟后,我发现该应用程序仍在使用 750MB 内存!
我应该做些什么来减少内存使用量?或者至少让它更早地收集垃圾?它似乎没有实现 IDisposable
,而且我的 google-fu 也让我失望了。谢谢。
最佳答案
我对 Microsoft.OData.Client.DataServiceContext 类也有类似的问题,它看起来类似于 System.Data.Services.Client.DataServiceContext。
发生的事情是 DataServiceContext 有一个 EntityTracker,用于跟踪对被迭代的实体所做的任何更改。环顾四周后,我看到 DataServiceContext 有一个 MergeOption 。属性(property)。要解决您的问题,请将其设置为 NoTracking,如下所示:
dsc.MergeOption = MergeOption.NoTracking;
这应该在开始枚举之前完成一次,无论是在构造函数中还是在循环之前的任何地方。
关于c# - 处理 DataServiceContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35485275/