Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Query / InternalTrees / ExplicitDiscriminatorMap.cs / 1 / ExplicitDiscriminatorMap.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Data.Metadata.Edm;
using System.Collections.Generic;
using System.Linq;
namespace System.Data.Query.InternalTrees
{
///
/// Describes user-defined discriminator metadata (e.g. for a basic TPH mapping). Encapsulates
/// relevant data from System.Data.Mapping.ViewGenerabetion.DiscriminatorMap (that is to say,
/// data relevant to the PlanCompiler). This separate class accomplishes two things:
///
/// 1. Maintain separation of ViewGen and PlanCompiler
/// 2. Avoid holding references to CQT expressions in ITree ops (which the ViewGen.DiscriminatorMap
/// holds a few CQT references)
///
internal class ExplicitDiscriminatorMap
{
private readonly System.Collections.ObjectModel.ReadOnlyCollection> m_typeMap;
private readonly EdmMember m_discriminatorProperty;
private readonly System.Collections.ObjectModel.ReadOnlyCollection m_properties;
internal ExplicitDiscriminatorMap(System.Data.Mapping.ViewGeneration.DiscriminatorMap template)
{
m_typeMap = template.TypeMap;
m_discriminatorProperty = template.Discriminator.Property;
m_properties = template.PropertyMap.Select(propertyValuePair => propertyValuePair.Key)
.ToList().AsReadOnly();
}
///
/// Maps from discriminator value to type.
///
internal System.Collections.ObjectModel.ReadOnlyCollection> TypeMap
{
get { return m_typeMap; }
}
///
/// Gets property containing discriminator value.
///
internal EdmMember DiscriminatorProperty
{
get { return m_discriminatorProperty; }
}
///
/// All properties for the type hierarchy.
///
internal System.Collections.ObjectModel.ReadOnlyCollection Properties
{
get { return m_properties; }
}
///
/// Returns the type id for the given entity type, or null if non exists.
///
internal object GetTypeId(EntityType entityType)
{
object result = null;
foreach (var discriminatorTypePair in this.TypeMap)
{
if (discriminatorTypePair.Value.EdmEquals(entityType))
{
result = discriminatorTypePair.Key;
break;
}
}
return result;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Data.Metadata.Edm;
using System.Collections.Generic;
using System.Linq;
namespace System.Data.Query.InternalTrees
{
///
/// Describes user-defined discriminator metadata (e.g. for a basic TPH mapping). Encapsulates
/// relevant data from System.Data.Mapping.ViewGenerabetion.DiscriminatorMap (that is to say,
/// data relevant to the PlanCompiler). This separate class accomplishes two things:
///
/// 1. Maintain separation of ViewGen and PlanCompiler
/// 2. Avoid holding references to CQT expressions in ITree ops (which the ViewGen.DiscriminatorMap
/// holds a few CQT references)
///
internal class ExplicitDiscriminatorMap
{
private readonly System.Collections.ObjectModel.ReadOnlyCollection> m_typeMap;
private readonly EdmMember m_discriminatorProperty;
private readonly System.Collections.ObjectModel.ReadOnlyCollection m_properties;
internal ExplicitDiscriminatorMap(System.Data.Mapping.ViewGeneration.DiscriminatorMap template)
{
m_typeMap = template.TypeMap;
m_discriminatorProperty = template.Discriminator.Property;
m_properties = template.PropertyMap.Select(propertyValuePair => propertyValuePair.Key)
.ToList().AsReadOnly();
}
///
/// Maps from discriminator value to type.
///
internal System.Collections.ObjectModel.ReadOnlyCollection> TypeMap
{
get { return m_typeMap; }
}
///
/// Gets property containing discriminator value.
///
internal EdmMember DiscriminatorProperty
{
get { return m_discriminatorProperty; }
}
///
/// All properties for the type hierarchy.
///
internal System.Collections.ObjectModel.ReadOnlyCollection Properties
{
get { return m_properties; }
}
///
/// Returns the type id for the given entity type, or null if non exists.
///
internal object GetTypeId(EntityType entityType)
{
object result = null;
foreach (var discriminatorTypePair in this.TypeMap)
{
if (discriminatorTypePair.Value.EdmEquals(entityType))
{
result = discriminatorTypePair.Key;
break;
}
}
return result;
}
}
}
// 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
- SemaphoreSecurity.cs
- SecurityDescriptor.cs
- HtmlInputFile.cs
- AppearanceEditorPart.cs
- arabicshape.cs
- shaper.cs
- SpanIndex.cs
- TextEditorSelection.cs
- DbProviderFactory.cs
- DragDropManager.cs
- ScalarConstant.cs
- AnonymousIdentificationSection.cs
- TextEditorTyping.cs
- RadioButtonList.cs
- TreeBuilderBamlTranslator.cs
- StructuralCache.cs
- HttpContext.cs
- AudioSignalProblemOccurredEventArgs.cs
- Parsers.cs
- ProfilePropertySettings.cs
- ParentQuery.cs
- TextEndOfSegment.cs
- DataRecordInfo.cs
- ValueChangedEventManager.cs
- TraceListeners.cs
- OleDbEnumerator.cs
- mda.cs
- ViewService.cs
- SourceElementsCollection.cs
- ProtocolsConfigurationEntry.cs
- Cursor.cs
- XsltOutput.cs
- NativeWindow.cs
- RewritingPass.cs
- GeometryHitTestParameters.cs
- HtmlString.cs
- StringSource.cs
- ComplexLine.cs
- WindowsAuthenticationEventArgs.cs
- LexicalChunk.cs
- SecurityCapabilities.cs
- EntityDataSourceDataSelection.cs
- ContentPropertyAttribute.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- RSACryptoServiceProvider.cs
- DesignBindingConverter.cs
- DataGridViewCellStyle.cs
- LeafCellTreeNode.cs
- DataGridViewControlCollection.cs
- PathStreamGeometryContext.cs
- SynchronizedDispatch.cs
- RowTypePropertyElement.cs
- XmlReturnWriter.cs
- ZipIOLocalFileDataDescriptor.cs
- LinqDataSourceContextData.cs
- MaterializeFromAtom.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- DataGridCaption.cs
- DescendentsWalker.cs
- Update.cs
- SecurityPermission.cs
- PointCollection.cs
- HwndHostAutomationPeer.cs
- QueryOpeningEnumerator.cs
- NullableLongSumAggregationOperator.cs
- PerformanceCounterTraceRecord.cs
- BaseCodeDomTreeGenerator.cs
- ModelPerspective.cs
- StateChangeEvent.cs
- LogReserveAndAppendState.cs
- ExpandCollapsePattern.cs
- ThemeDirectoryCompiler.cs
- InputReportEventArgs.cs
- LinqDataSourceContextEventArgs.cs
- DataGridTableCollection.cs
- RtfToken.cs
- ConnectivityStatus.cs
- XmlDigitalSignatureProcessor.cs
- DtcInterfaces.cs
- HtmlLinkAdapter.cs
- ItemsControlAutomationPeer.cs
- BitmapMetadataEnumerator.cs
- DBNull.cs
- FileRecordSequenceHelper.cs
- WebMessageFormatHelper.cs
- MLangCodePageEncoding.cs
- SpellerError.cs
- HitTestParameters3D.cs
- coordinatorscratchpad.cs
- SqlUtil.cs
- Pair.cs
- ParsedAttributeCollection.cs
- LayoutTable.cs
- DefaultSerializationProviderAttribute.cs
- TextProperties.cs
- QueryContinueDragEventArgs.cs
- SR.Designer.cs
- BCryptSafeHandles.cs
- ControlCollection.cs
- SecurityTokenRequirement.cs