c# - 处理 DataServiceContext?

标签 c# odata wcf-data-services

我创建了一个读取 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/

相关文章:

Azure:CLI OData 筛选器字符串匹配

c# - 网格绑定(bind)列名称

wcf-data-services - 通过NetFlix odata结果进行分页

c# - 如何在 ASP.NET 网站中调用非托管代码并将其托管在 IIS 中?

mysql - 'Project3.x' 中的 EF OData MySql 未知列 'where clause'

c# - Entity Framework 代码一级关系

java - 使用 Odata4j 为查询参数表达式创建抽象语法树

wcf - 如何在 IIS7 中托管 WCF 数据服务 (OData)?

C#:触发事件时的不同语法形式

c# - TFS C# API : Workspace. PendAdd 静默失败