public static IReference <SubReportInstance> CreateInstance(ScopeInstance parentInstance, SubReport subReport, OnDemandMetadata odpMetadata) { SubReportInstance subReportInstance = new SubReportInstance(subReport, odpMetadata); IReference <SubReportInstance> reference = odpMetadata.GroupTreeScalabilityCache.AllocateAndPin(subReportInstance, 0); subReportInstance.m_cleanupRef = (IDisposable)reference; parentInstance.AddChildScope((IReference <ScopeInstance>)reference, subReport.IndexInCollection); return(reference); }
public static IReference <DataRegionInstance> CreateInstance(ScopeInstance parentInstance, OnDemandMetadata odpMetadata, DataRegion dataRegionDef, int dataSetIndex) { DataRegionInstance dataRegionInstance = new DataRegionInstance(dataRegionDef, dataSetIndex); GroupTreeScalabilityCache groupTreeScalabilityCache = odpMetadata.GroupTreeScalabilityCache; IReference <DataRegionInstance> reference; if (parentInstance.ObjectType == AspNetCore.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType.ReportInstance) { ReportInstance reportInstance = (ReportInstance)parentInstance; reference = reportInstance.GetTopLevelDataRegionReference(dataRegionDef.IndexInCollection); groupTreeScalabilityCache.SetTreePartitionContentsAndPin(reference, dataRegionInstance); } else { reference = groupTreeScalabilityCache.AllocateAndPin(dataRegionInstance, 0); parentInstance.AddChildScope((IReference <ScopeInstance>)reference, dataRegionDef.IndexInCollection); } dataRegionInstance.m_cleanupRef = (IDisposable)reference; return(reference); }