我正在使用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,并占用大量内存。

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

是否可以处置它们?

c# - TdsParserStateObject-处理? Entity Framework-LMLPHP

最佳答案

通过删除以下内容在某种程度上解决了我自己的问题:
"MultipleActiveResultSets=True"
从我的连接字符串。我的连接是在后台线程上建立的,所以这可以解释我为什么看到增加的原因:

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

关于c# - TdsParserStateObject-处理? Entity Framework ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36330343/

10-13 06:01