Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / Caching / MetadataCacheItem.cs / 1305376 / MetadataCacheItem.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Provides a class to cache metadata information.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Caching
{
using System;
using System.Collections.Generic;
using System.Data.Services.Common;
using System.Data.Services.Providers;
using System.Diagnostics;
/// Use this class to cache metadata for providers.
internal class MetadataCacheItem
{
#region Private fields.
/// list of top level entity sets
private readonly Dictionary entitySets;
/// Collection of service operations, keyed by name.
private readonly Dictionary serviceOperations;
/// Target type for the data provider.
private readonly Type type;
/// Cache of resource properties per type.
private readonly Dictionary typeCache;
/// Cache of immediate derived types per type.
private readonly Dictionary> childTypesCache;
/// Service configuration information.
private DataServiceConfiguration configuration;
/// Whether all EPM properties serialize in an Astoria V1-compatible way.
private bool epmIsV1Compatible;
///
/// Keep track of the calculated visibility of resource types.
///
private Dictionary visibleTypeCache;
///
/// Maps resource set names to ResourceSetWrappers.
///
private Dictionary resourceSetWrapperCache;
///
/// Maps service operation names to ServiceOperationWrappers.
///
private Dictionary serviceOperationWrapperCache;
///
/// Maps names to ResourceAssociationSets.
///
private Dictionary resourceAssociationSetCache;
///
/// Mapes "resourceSetName_resourceTypeName" to the list of visible properties from the set.
///
private Dictionary> resourcePropertyCache;
///
/// Mapes "resourceSetName_resourceTypeName" to boolean of whether resourceType is allowed for resourceSet
///
private Dictionary entityTypeDisallowedForSet;
#endregion Private fields.
/// Initializes a new instance.
/// Type of data context for which metadata will be generated.
internal MetadataCacheItem(Type type)
{
Debug.Assert(type != null, "type != null");
this.serviceOperations = new Dictionary(EqualityComparer.Default);
this.typeCache = new Dictionary(EqualityComparer.Default);
this.childTypesCache = new Dictionary>(ReferenceEqualityComparer.Instance);
this.entitySets = new Dictionary(EqualityComparer.Default);
this.epmIsV1Compatible = true;
this.resourceSetWrapperCache = new Dictionary(EqualityComparer.Default);
this.serviceOperationWrapperCache = new Dictionary(EqualityComparer.Default);
this.visibleTypeCache = new Dictionary(EqualityComparer.Default);
this.resourceAssociationSetCache = new Dictionary(EqualityComparer.Default);
this.resourcePropertyCache = new Dictionary>(EqualityComparer.Default);
this.entityTypeDisallowedForSet = new Dictionary(EqualityComparer.Default);
this.type = type;
this.EdmSchemaVersion = MetadataEdmSchemaVersion.Version1Dot0;
}
#region Properties.
/// Service configuration information.
internal DataServiceConfiguration Configuration
{
[DebuggerStepThrough]
get
{
return this.configuration;
}
set
{
Debug.Assert(value != null, "value != null");
Debug.Assert(this.configuration == null, "this.configuration == null -- otherwise it's being set more than once");
this.configuration = value;
}
}
///
/// Keep track of the calculated visibility of resource types.
///
internal Dictionary VisibleTypeCache
{
[DebuggerStepThrough]
get { return this.visibleTypeCache; }
}
///
/// Maps resource set names to ResourceSetWrappers.
///
internal Dictionary ResourceSetWrapperCache
{
[DebuggerStepThrough]
get { return this.resourceSetWrapperCache; }
}
///
/// Maps service operation names to ServiceOperationWrappers.
///
internal Dictionary ServiceOperationWrapperCache
{
[DebuggerStepThrough]
get { return this.serviceOperationWrapperCache; }
}
///
/// Maps names to ResourceAssociationSets.
///
internal Dictionary ResourceAssociationSetCache
{
[DebuggerStepThrough]
get { return this.resourceAssociationSetCache; }
}
///
/// Mapes "resourceSetName_resourceTypeName" to the list of visible properties from the set.
///
internal Dictionary> ResourcePropertyCache
{
[DebuggerStepThrough]
get { return this.resourcePropertyCache; }
}
///
/// Mapes "resourceSetName_resourceTypeName" to boolean of whether resourceType is allowed for resourceSet
///
internal Dictionary EntityTypeDisallowedForSet
{
[DebuggerStepThrough]
get { return this.entityTypeDisallowedForSet; }
}
/// Collection of service operations, keyed by name.
internal Dictionary ServiceOperations
{
[DebuggerStepThrough]
get { return this.serviceOperations; }
}
/// Cache of resource properties per type.
internal Dictionary TypeCache
{
[DebuggerStepThrough]
get { return this.typeCache; }
}
/// Cache of immediate derived types per type.
internal Dictionary> ChildTypesCache
{
[DebuggerStepThrough]
get { return this.childTypesCache; }
}
/// list of top level entity sets
internal Dictionary EntitySets
{
[DebuggerStepThrough]
get { return this.entitySets; }
}
/// Target type for the data provider.
internal Type Type
{
[DebuggerStepThrough]
get { return this.type; }
}
/// EDM version to which metadata is compatible.
///
/// For example, a service operation of type Void is not acceptable 1.0 CSDL,
/// so it should use 1.1 CSDL instead. Similarly, OpenTypes are supported
/// in 1.2 and not before.
///
internal MetadataEdmSchemaVersion EdmSchemaVersion
{
get;
set;
}
/// Whether all EPM properties serialize in an Astoria V1-compatible way.
///
/// This property is false if any property has KeepInContent set to false.
///
internal bool EpmIsV1Compatible
{
get { return this.epmIsV1Compatible; }
set { this.epmIsV1Compatible = value; }
}
#endregion Properties.
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ActivityExecutor.cs
- ImageSource.cs
- FunctionQuery.cs
- ToolStripInSituService.cs
- MouseActionConverter.cs
- PropertyValueUIItem.cs
- InstanceCreationEditor.cs
- DuplicateWaitObjectException.cs
- RightNameExpirationInfoPair.cs
- LinkButton.cs
- MailAddress.cs
- SortDescription.cs
- MDIWindowDialog.cs
- ContextBase.cs
- RuntimeHelpers.cs
- PointHitTestParameters.cs
- EdmEntityTypeAttribute.cs
- Icon.cs
- DetailsViewModeEventArgs.cs
- DefaultTextStoreTextComposition.cs
- DefaultValidator.cs
- LocalizableAttribute.cs
- DispatcherFrame.cs
- MethodSignatureGenerator.cs
- ListViewItemMouseHoverEvent.cs
- Visual3D.cs
- SqlClientMetaDataCollectionNames.cs
- RowParagraph.cs
- DocumentPaginator.cs
- OdbcDataReader.cs
- SoapExtensionTypeElement.cs
- FontFamilyConverter.cs
- EncodedStreamFactory.cs
- MarshalByValueComponent.cs
- RelatedPropertyManager.cs
- DesignBinding.cs
- TryLoadRunnableWorkflowCommand.cs
- ProgressBar.cs
- TreeNodeStyle.cs
- HttpListenerException.cs
- TrackingProfileSerializer.cs
- FactoryGenerator.cs
- StdValidatorsAndConverters.cs
- UserControl.cs
- XmlConvert.cs
- HttpHandlersSection.cs
- ProfileService.cs
- StreamInfo.cs
- BrowserCapabilitiesCompiler.cs
- TypeUtils.cs
- RadioButtonAutomationPeer.cs
- NativeMethodsCLR.cs
- HostedElements.cs
- EntitySqlQueryState.cs
- BulletedList.cs
- XmlAttributeOverrides.cs
- XPathNodeHelper.cs
- Int16AnimationUsingKeyFrames.cs
- DataBindingCollection.cs
- recordstatescratchpad.cs
- Rotation3D.cs
- SQLBytesStorage.cs
- SectionRecord.cs
- MemberRelationshipService.cs
- SynchronizedPool.cs
- Tuple.cs
- UnknownBitmapEncoder.cs
- TimerEventSubscriptionCollection.cs
- DispatcherOperation.cs
- ConfigXmlText.cs
- ImpersonationContext.cs
- DesignerOptions.cs
- SrgsDocument.cs
- OdbcRowUpdatingEvent.cs
- HitTestDrawingContextWalker.cs
- HttpBufferlessInputStream.cs
- DbQueryCommandTree.cs
- TextBreakpoint.cs
- XmlSchemaAnyAttribute.cs
- CapabilitiesAssignment.cs
- SafeRightsManagementHandle.cs
- BeginCreateSecurityTokenRequest.cs
- SchemaEntity.cs
- ExpressionList.cs
- ControlBindingsCollection.cs
- CalendarDateChangedEventArgs.cs
- DocumentGrid.cs
- RemoteEndpointMessageProperty.cs
- DecimalAverageAggregationOperator.cs
- xmlglyphRunInfo.cs
- CalendarDesigner.cs
- CheckBoxStandardAdapter.cs
- Paragraph.cs
- UnsafeNativeMethods.cs
- UserMapPath.cs
- ZipFileInfoCollection.cs
- DesignerVerb.cs
- Binding.cs
- DbConnectionPoolOptions.cs
- WebRequestModulesSection.cs