我正在使用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
并且需要大量记忆。
此外,这些物体在一段时间后不会消失。
可以处理它们吗?
答案 0 :(得分:1)
通过删除来解决我自己的问题:
"MultipleActiveResultSets=True"
来自我的连接字符串。我的连接是在后台线程上进行的,所以这就解释了为什么我看到了增长: