TdsParserStateObject - 处理?实体框架

时间:2016-03-31 10:09:45

标签: c# entity-framework

我正在使用EF并遇到TdsParserStateObject的问题。

我多次调用这种方法:

 public void SaveDataFromERP(string synchronizationType, string xml,int errorsHandlingPercentagePartition)
    {
        var param1 = new SqlParameter("XML", SqlDbType.Xml);
        param1.Value = xml;
        var param2 = new SqlParameter("PartitionedPackagePercentage", SqlDbType.Int);
        param2.Value = errorsHandlingPercentagePartition;
        ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<dynamic>(
            $"exec [Synchronization].[Import{synchronizationType}] @XML,  @PartitionedPackagePercentage", param1 , param2 );
}

我的存储库包含

SynchronizationRepository : ISynchronizationRepository
{
  private readonly POSDBContext _context = new POSDBContext();
  public void SaveData(string typeName, string xmlFile, int errorsHandlingPartitionPercentage)
    {
        _context.SaveData(typeName, xmlFile,errorsHandlingPartitionPercentage);
    }
 }

当我致电ExecuteStoreQuery时,我可以在内存TdsParserStateObject中看到新对象。

不幸的是,我必须多次按顺序调用此方法(大量数据)。结果是大约60 TdsParserStateObject并且需要大量记忆。

此外,这些物体在一段时间后不会消失。

可以处理它们吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

通过删除来解决我自己的问题:

"MultipleActiveResultSets=True"

来自我的连接字符串。我的连接是在后台线程上进行的,所以这就解释了为什么我看到了增长:

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/enabling-multiple-active-result-sets