Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Mapping / StorageSetMapping.cs / 1305376 / StorageSetMapping.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Data.Metadata.Edm;
using System.Data.Common.Utils;
using System.Diagnostics;
using System.Linq;
namespace System.Data.Mapping {
using Triple = Pair>;
///
/// Represents the Mapping metadata for an Extent in ES space.
///
///
/// For Example if conceptually you could represent the ES MSL file as following
/// --Mapping
/// --EntityContainerMapping ( CNorthwind-->SNorthwind )
/// --EntitySetMapping
/// --EntityTypeMapping
/// --TableMappingFragment
/// --EntityTypeMapping
/// --TableMappingFragment
/// --AssociationSetMapping
/// --AssociationTypeMapping
/// --TableMappingFragment
/// --EntityContainerMapping ( CMyDatabase-->SMyDatabase )
/// --CompositionSetMapping
/// --CompositionTypeMapping
/// This class represents the metadata for all the extent map elements in the
/// above example namely EntitySetMapping, AssociationSetMapping and CompositionSetMapping.
/// The SetMapping elements that are children of the EntityContainerMapping element
/// can be accessed through the properties on this type.
///
internal abstract class StorageSetMapping
{
#region Constructors
///
/// Construct the new ExtentMapping object.
///
/// Extent metadata object
/// The EntityContainer mapping that contains this extent mapping
internal StorageSetMapping(EntitySetBase extent, StorageEntityContainerMapping entityContainerMapping) {
this.m_entityContainerMapping = entityContainerMapping;
this.m_extent = extent;
this.m_typeMappings = new List();
}
#endregion
#region Fields
private StorageEntityContainerMapping m_entityContainerMapping; //The EntityContainer mapping that contains this extent mapping
private EntitySetBase m_extent; //The extent for which this mapping represents.
private List m_typeMappings; //Set of type mappings that make up the Set Mapping
//Unless this is a EntitySetMapping with inheritance,
//you would have a single type mapping per set
private string m_queryView; //User defined Query View for the EntitySet
private int m_startLineNumber; //Line Number for Set Mapping element start tag
private int m_startLinePosition; //Line position for Set Mapping element start tag
private bool m_hasModificationFunctionMapping; // has modificationfunctionmapping for set mapping
//Stores type-Specific user-defined QueryViews
private Dictionary m_typeSpecificQueryViews =
new Dictionary(Triple.PairComparer.Instance);
#endregion
#region Properties
///
/// The set for which this mapping is for
///
internal EntitySetBase Set
{
get {
return this.m_extent;
}
}
/////
///// TypeMappings that make up this set type.
///// For AssociationSet and CompositionSet there will be one type( atleast thats what
///// we expect as of now). EntitySet could have mappings for multiple Entity types.
/////
internal ReadOnlyCollection TypeMappings
{
get
{
return this.m_typeMappings.AsReadOnly();
}
}
internal StorageEntityContainerMapping EntityContainerMapping
{
get
{
return m_entityContainerMapping;
}
}
///
/// Whether the SetMapping has empty content
/// Returns true if there no table Mapping fragments
///
internal virtual bool HasNoContent
{
get
{
if (QueryView != null)
{
return false;
}
foreach (StorageTypeMapping typeMap in TypeMappings)
{
foreach (StorageMappingFragment mapFragment in typeMap.MappingFragments)
{
foreach (StoragePropertyMapping propertyMap in mapFragment.AllProperties)
{
return false;
}
}
}
return true;
}
}
internal string QueryView
{
get { return m_queryView; }
set { m_queryView = value; }
}
///
/// Line Number in MSL file where the Set Mapping Element's Start Tag is present.
///
internal int StartLineNumber
{
get
{
return m_startLineNumber;
}
set
{
m_startLineNumber = value;
}
}
///
/// Line Position in MSL file where the Set Mapping Element's Start Tag is present.
///
internal int StartLinePosition
{
get
{
return m_startLinePosition;
}
set
{
m_startLinePosition = value;
}
}
internal bool HasModificationFunctionMapping
{
get
{
return m_hasModificationFunctionMapping;
}
set
{
m_hasModificationFunctionMapping = value;
}
}
#endregion
#region Methods
///
/// Add type mapping as a child under this SetMapping
///
///
internal void AddTypeMapping(StorageTypeMapping typeMapping)
{
this.m_typeMappings.Add(typeMapping);
}
///
/// This method is primarily for debugging purposes.
/// Will be removed shortly.
///
internal abstract void Print(int index);
internal bool ContainsTypeSpecificQueryView(Triple key)
{
return m_typeSpecificQueryViews.ContainsKey(key);
}
///
/// Stores a type-specific user-defiend QueryView so that it can be loaded
/// into StorageMappingItemCollection's view cache.
///
internal void AddTypeSpecificQueryView(Triple key, string viewString)
{
Debug.Assert(!m_typeSpecificQueryViews.ContainsKey(key), "Query View already present for the given Key");
m_typeSpecificQueryViews.Add(key, viewString);
}
internal ReadOnlyCollection GetTypeSpecificQVKeys()
{
return new ReadOnlyCollection(m_typeSpecificQueryViews.Keys.ToList());
}
internal string GetTypeSpecificQueryView(Triple key)
{
Debug.Assert(m_typeSpecificQueryViews.ContainsKey(key));
return m_typeSpecificQueryViews[key];
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Data.Metadata.Edm;
using System.Data.Common.Utils;
using System.Diagnostics;
using System.Linq;
namespace System.Data.Mapping {
using Triple = Pair>;
///
/// Represents the Mapping metadata for an Extent in ES space.
///
///
/// For Example if conceptually you could represent the ES MSL file as following
/// --Mapping
/// --EntityContainerMapping ( CNorthwind-->SNorthwind )
/// --EntitySetMapping
/// --EntityTypeMapping
/// --TableMappingFragment
/// --EntityTypeMapping
/// --TableMappingFragment
/// --AssociationSetMapping
/// --AssociationTypeMapping
/// --TableMappingFragment
/// --EntityContainerMapping ( CMyDatabase-->SMyDatabase )
/// --CompositionSetMapping
/// --CompositionTypeMapping
/// This class represents the metadata for all the extent map elements in the
/// above example namely EntitySetMapping, AssociationSetMapping and CompositionSetMapping.
/// The SetMapping elements that are children of the EntityContainerMapping element
/// can be accessed through the properties on this type.
///
internal abstract class StorageSetMapping
{
#region Constructors
///
/// Construct the new ExtentMapping object.
///
/// Extent metadata object
/// The EntityContainer mapping that contains this extent mapping
internal StorageSetMapping(EntitySetBase extent, StorageEntityContainerMapping entityContainerMapping) {
this.m_entityContainerMapping = entityContainerMapping;
this.m_extent = extent;
this.m_typeMappings = new List();
}
#endregion
#region Fields
private StorageEntityContainerMapping m_entityContainerMapping; //The EntityContainer mapping that contains this extent mapping
private EntitySetBase m_extent; //The extent for which this mapping represents.
private List m_typeMappings; //Set of type mappings that make up the Set Mapping
//Unless this is a EntitySetMapping with inheritance,
//you would have a single type mapping per set
private string m_queryView; //User defined Query View for the EntitySet
private int m_startLineNumber; //Line Number for Set Mapping element start tag
private int m_startLinePosition; //Line position for Set Mapping element start tag
private bool m_hasModificationFunctionMapping; // has modificationfunctionmapping for set mapping
//Stores type-Specific user-defined QueryViews
private Dictionary m_typeSpecificQueryViews =
new Dictionary(Triple.PairComparer.Instance);
#endregion
#region Properties
///
/// The set for which this mapping is for
///
internal EntitySetBase Set
{
get {
return this.m_extent;
}
}
/////
///// TypeMappings that make up this set type.
///// For AssociationSet and CompositionSet there will be one type( atleast thats what
///// we expect as of now). EntitySet could have mappings for multiple Entity types.
/////
internal ReadOnlyCollection TypeMappings
{
get
{
return this.m_typeMappings.AsReadOnly();
}
}
internal StorageEntityContainerMapping EntityContainerMapping
{
get
{
return m_entityContainerMapping;
}
}
///
/// Whether the SetMapping has empty content
/// Returns true if there no table Mapping fragments
///
internal virtual bool HasNoContent
{
get
{
if (QueryView != null)
{
return false;
}
foreach (StorageTypeMapping typeMap in TypeMappings)
{
foreach (StorageMappingFragment mapFragment in typeMap.MappingFragments)
{
foreach (StoragePropertyMapping propertyMap in mapFragment.AllProperties)
{
return false;
}
}
}
return true;
}
}
internal string QueryView
{
get { return m_queryView; }
set { m_queryView = value; }
}
///
/// Line Number in MSL file where the Set Mapping Element's Start Tag is present.
///
internal int StartLineNumber
{
get
{
return m_startLineNumber;
}
set
{
m_startLineNumber = value;
}
}
///
/// Line Position in MSL file where the Set Mapping Element's Start Tag is present.
///
internal int StartLinePosition
{
get
{
return m_startLinePosition;
}
set
{
m_startLinePosition = value;
}
}
internal bool HasModificationFunctionMapping
{
get
{
return m_hasModificationFunctionMapping;
}
set
{
m_hasModificationFunctionMapping = value;
}
}
#endregion
#region Methods
///
/// Add type mapping as a child under this SetMapping
///
///
internal void AddTypeMapping(StorageTypeMapping typeMapping)
{
this.m_typeMappings.Add(typeMapping);
}
///
/// This method is primarily for debugging purposes.
/// Will be removed shortly.
///
internal abstract void Print(int index);
internal bool ContainsTypeSpecificQueryView(Triple key)
{
return m_typeSpecificQueryViews.ContainsKey(key);
}
///
/// Stores a type-specific user-defiend QueryView so that it can be loaded
/// into StorageMappingItemCollection's view cache.
///
internal void AddTypeSpecificQueryView(Triple key, string viewString)
{
Debug.Assert(!m_typeSpecificQueryViews.ContainsKey(key), "Query View already present for the given Key");
m_typeSpecificQueryViews.Add(key, viewString);
}
internal ReadOnlyCollection GetTypeSpecificQVKeys()
{
return new ReadOnlyCollection(m_typeSpecificQueryViews.Keys.ToList());
}
internal string GetTypeSpecificQueryView(Triple key)
{
Debug.Assert(m_typeSpecificQueryViews.ContainsKey(key));
return m_typeSpecificQueryViews[key];
}
#endregion
}
}
// 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
- DocumentPaginator.cs
- QueryStringParameter.cs
- _NetRes.cs
- FormatterConverter.cs
- ConfigurationElement.cs
- ConnectionsZone.cs
- RuntimeHandles.cs
- TdsParameterSetter.cs
- securestring.cs
- TextSelectionProcessor.cs
- UriScheme.cs
- Path.cs
- WebPartConnectionsCancelVerb.cs
- StickyNote.cs
- ValueTable.cs
- DuplicateWaitObjectException.cs
- Barrier.cs
- _HeaderInfo.cs
- UnknownWrapper.cs
- ResetableIterator.cs
- ClientEventManager.cs
- SQLDecimal.cs
- UiaCoreProviderApi.cs
- DataSetMappper.cs
- LinearGradientBrush.cs
- EpmCustomContentWriterNodeData.cs
- CapabilitiesUse.cs
- EncoderReplacementFallback.cs
- MimeFormReflector.cs
- GroupBox.cs
- MimeReturn.cs
- AssemblyFilter.cs
- TypeUtil.cs
- InputLanguageEventArgs.cs
- EncodingInfo.cs
- AssemblyInfo.cs
- ProfileProvider.cs
- EncodingStreamWrapper.cs
- GlyphRunDrawing.cs
- ButtonBaseAutomationPeer.cs
- CmsUtils.cs
- ProfilePropertyNameValidator.cs
- Tuple.cs
- MonitorWrapper.cs
- UnknownBitmapDecoder.cs
- shaperfactoryquerycacheentry.cs
- OracleConnectionStringBuilder.cs
- SafeFileHandle.cs
- TimeSpanStorage.cs
- PaintEvent.cs
- SQLInt16.cs
- ReachObjectContext.cs
- DesignerGenericWebPart.cs
- Select.cs
- SecurityException.cs
- AuthenticatingEventArgs.cs
- PanelDesigner.cs
- PolicyLevel.cs
- PopupRoot.cs
- BindStream.cs
- DataPagerFieldItem.cs
- TreeNode.cs
- SafeRegistryHandle.cs
- DynamicPropertyHolder.cs
- BinaryObjectReader.cs
- ResourceWriter.cs
- TextParaLineResult.cs
- DocumentSequenceHighlightLayer.cs
- Mouse.cs
- FileSystemEventArgs.cs
- ManifestResourceInfo.cs
- ExeContext.cs
- XmlSchemaFacet.cs
- MostlySingletonList.cs
- BCLDebug.cs
- TimeEnumHelper.cs
- xamlnodes.cs
- TextElement.cs
- QueryRewriter.cs
- ToolbarAUtomationPeer.cs
- Interlocked.cs
- EncodingStreamWrapper.cs
- XmlTextReader.cs
- TableItemPattern.cs
- TypeToStringValueConverter.cs
- ImageList.cs
- SimpleType.cs
- ZipIOExtraField.cs
- DesignConnectionCollection.cs
- DocumentViewerBaseAutomationPeer.cs
- SqlStream.cs
- TransactionState.cs
- DataGridDetailsPresenter.cs
- MinimizableAttributeTypeConverter.cs
- XmlILOptimizerVisitor.cs
- SignatureToken.cs
- PasswordBoxAutomationPeer.cs
- StringValidator.cs
- _LocalDataStore.cs
- DesignerCatalogPartChrome.cs