[英]Disposing DataServiceContext?
我已經創建了一個讀取CSV
文件,創建DataServiceContext
並將大量數據插入到我的遠程OData
API服務器的應用程序。
但是,在運行30,000
條記錄的導入后5分鍾,我發現該應用程序仍在使用750MB的內存!
我應該采取什么措施來減少內存使用量? 或者至少讓它更早地進行垃圾收集? 它似乎沒有實現IDisposable
,並且我的google-fu讓我失敗了。 謝謝。
如果對任何人有幫助,我在處理清除上下文后就一直在使用它。
public static void ClearChanges(this DataServiceContext context)
{
foreach (var entity in context.Entities.ToList())
{
context.Detach(entity.Entity);
}
foreach (var link in context.Links.ToList())
{
context.DetachLink(link.Source, link.SourceProperty, link.Target);
}
}
我在Microsoft.OData.Client.DataServiceContext類中遇到了類似的問題,該類看起來類似於System.Data.Services.Client.DataServiceContext。
發生的事情是,DataServiceContext有一個EntityTracker,用於跟蹤對要迭代的實體所做的任何更改。 環顧四周后,我看到DataServiceContext具有MergeOption屬性。 要解決您的問題,請將其設置為NoTracking,如下所示:
dsc.MergeOption = MergeOption.NoTracking;
應該在開始枚舉之前完成一次,無論是在構造函數中還是在循環之前的任何地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.