Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Mapping / ObjectTypeMapping.cs / 1305376 / ObjectTypeMapping.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.Diagnostics; using System.Data.Metadata.Edm; using System.Data.Common.Utils; namespace System.Data.Mapping { ////// Represents the metadata for OCObjectMapping. /// internal class ObjectTypeMapping : Map { #region Constructors ////// Construct a new ObjectTypeMapping object /// /// /// internal ObjectTypeMapping(EdmType clrType, EdmType cdmType) { Debug.Assert(clrType.BuiltInTypeKind == cdmType.BuiltInTypeKind, "BuiltInTypeKind must be the same for both types"); this.m_clrType = clrType; this.m_cdmType = cdmType; identity = clrType.Identity + ObjectMslConstructs.IdentitySeperator + cdmType.Identity; if (Helper.IsStructuralType(cdmType)) { m_memberMapping = new Dictionary(((StructuralType)cdmType).Members.Count); } else { m_memberMapping = EmptyMemberMapping; } } #endregion #region Fields #region Internal private readonly EdmType m_clrType; //type on the Clr side that is being mapped private readonly EdmType m_cdmType; //type on the Cdm side that is being mapped private readonly string identity; private readonly Dictionary m_memberMapping; //Indexes into the member mappings collection based on clr member name private static readonly Dictionary EmptyMemberMapping = new Dictionary (0); #endregion #endregion #region Properties /// /// Gets the type kind for this item /// public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.MetadataItem; } } ////// The reference to the Clr type in Metadata /// that participates in this mapping instance /// internal EdmType ClrType { get { return this.m_clrType; } } ////// The reference to the Cdm type in Metadata /// that participates in this mapping instance /// internal override MetadataItem EdmItem { get { return this.EdmType; } } ////// The reference to the Cdm type in Metadata /// that participates in this mapping instance /// internal EdmType EdmType { get { return this.m_cdmType; } } ////// Returns the Identity of ObjectTypeMapping. /// The identity for an Object Type Map is the concatenation of /// CLR Type Idntity + ':' + CDM Type Identity /// internal override string Identity { get { return identity; } } #endregion #region Methods ////// get a MemberMap for the member name specified /// /// the name of the CDM member for which map needs to be retrieved internal ObjectPropertyMapping GetPropertyMap(String propertyName) { ObjectMemberMapping memberMapping = GetMemberMap(propertyName, false /*ignoreCase*/); if (memberMapping != null && memberMapping.MemberMappingKind == MemberMappingKind.ScalarPropertyMapping || memberMapping.MemberMappingKind == MemberMappingKind.ComplexPropertyMapping) { return (ObjectPropertyMapping)memberMapping; } return null; } ////// Add a member mapping as a child of this object mapping /// /// child property mapping to be added internal void AddMemberMap(ObjectMemberMapping memberMapping) { Debug.Assert(memberMapping.ClrMember.Name == memberMapping.EdmMember.Name, "Both clrmember and edmMember name must be the same"); //Check to see if either the Clr member or the Cdm member specified in this //type has already been mapped. Debug.Assert(!m_memberMapping.ContainsKey(memberMapping.EdmMember.Name)); Debug.Assert(!Type.ReferenceEquals(m_memberMapping, EmptyMemberMapping), "Make sure you don't add anything to the static emtpy member mapping"); m_memberMapping.Add(memberMapping.EdmMember.Name, memberMapping); } ////// Returns the member map for the given clr member /// /// /// ///internal ObjectMemberMapping GetMemberMapForClrMember(string clrMemberName, bool ignoreCase) { return GetMemberMap(clrMemberName, ignoreCase); } /// /// returns the member mapping for the given member /// /// /// ///private ObjectMemberMapping GetMemberMap(string propertyName, bool ignoreCase) { EntityUtil.CheckStringArgument(propertyName, "propertyName"); ObjectMemberMapping memberMapping = null; if (!ignoreCase) { //First get the index of the member map from the clr indexs m_memberMapping.TryGetValue(propertyName, out memberMapping); } else { foreach (KeyValuePair keyValuePair in m_memberMapping) { if (keyValuePair.Key.Equals(propertyName, StringComparison.OrdinalIgnoreCase)) { if (memberMapping != null) { throw new MappingException(System.Data.Entity.Strings.Mapping_Duplicate_PropertyMap_CaseInsensitive( propertyName)); } memberMapping = keyValuePair.Value; } } } return memberMapping; } /// /// Overriding System.Object.ToString to provide better String representation /// for this type. /// public override string ToString() { return this.Identity; } #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.Diagnostics; using System.Data.Metadata.Edm; using System.Data.Common.Utils; namespace System.Data.Mapping { ////// Represents the metadata for OCObjectMapping. /// internal class ObjectTypeMapping : Map { #region Constructors ////// Construct a new ObjectTypeMapping object /// /// /// internal ObjectTypeMapping(EdmType clrType, EdmType cdmType) { Debug.Assert(clrType.BuiltInTypeKind == cdmType.BuiltInTypeKind, "BuiltInTypeKind must be the same for both types"); this.m_clrType = clrType; this.m_cdmType = cdmType; identity = clrType.Identity + ObjectMslConstructs.IdentitySeperator + cdmType.Identity; if (Helper.IsStructuralType(cdmType)) { m_memberMapping = new Dictionary(((StructuralType)cdmType).Members.Count); } else { m_memberMapping = EmptyMemberMapping; } } #endregion #region Fields #region Internal private readonly EdmType m_clrType; //type on the Clr side that is being mapped private readonly EdmType m_cdmType; //type on the Cdm side that is being mapped private readonly string identity; private readonly Dictionary m_memberMapping; //Indexes into the member mappings collection based on clr member name private static readonly Dictionary EmptyMemberMapping = new Dictionary (0); #endregion #endregion #region Properties /// /// Gets the type kind for this item /// public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.MetadataItem; } } ////// The reference to the Clr type in Metadata /// that participates in this mapping instance /// internal EdmType ClrType { get { return this.m_clrType; } } ////// The reference to the Cdm type in Metadata /// that participates in this mapping instance /// internal override MetadataItem EdmItem { get { return this.EdmType; } } ////// The reference to the Cdm type in Metadata /// that participates in this mapping instance /// internal EdmType EdmType { get { return this.m_cdmType; } } ////// Returns the Identity of ObjectTypeMapping. /// The identity for an Object Type Map is the concatenation of /// CLR Type Idntity + ':' + CDM Type Identity /// internal override string Identity { get { return identity; } } #endregion #region Methods ////// get a MemberMap for the member name specified /// /// the name of the CDM member for which map needs to be retrieved internal ObjectPropertyMapping GetPropertyMap(String propertyName) { ObjectMemberMapping memberMapping = GetMemberMap(propertyName, false /*ignoreCase*/); if (memberMapping != null && memberMapping.MemberMappingKind == MemberMappingKind.ScalarPropertyMapping || memberMapping.MemberMappingKind == MemberMappingKind.ComplexPropertyMapping) { return (ObjectPropertyMapping)memberMapping; } return null; } ////// Add a member mapping as a child of this object mapping /// /// child property mapping to be added internal void AddMemberMap(ObjectMemberMapping memberMapping) { Debug.Assert(memberMapping.ClrMember.Name == memberMapping.EdmMember.Name, "Both clrmember and edmMember name must be the same"); //Check to see if either the Clr member or the Cdm member specified in this //type has already been mapped. Debug.Assert(!m_memberMapping.ContainsKey(memberMapping.EdmMember.Name)); Debug.Assert(!Type.ReferenceEquals(m_memberMapping, EmptyMemberMapping), "Make sure you don't add anything to the static emtpy member mapping"); m_memberMapping.Add(memberMapping.EdmMember.Name, memberMapping); } ////// Returns the member map for the given clr member /// /// /// ///internal ObjectMemberMapping GetMemberMapForClrMember(string clrMemberName, bool ignoreCase) { return GetMemberMap(clrMemberName, ignoreCase); } /// /// returns the member mapping for the given member /// /// /// ///private ObjectMemberMapping GetMemberMap(string propertyName, bool ignoreCase) { EntityUtil.CheckStringArgument(propertyName, "propertyName"); ObjectMemberMapping memberMapping = null; if (!ignoreCase) { //First get the index of the member map from the clr indexs m_memberMapping.TryGetValue(propertyName, out memberMapping); } else { foreach (KeyValuePair keyValuePair in m_memberMapping) { if (keyValuePair.Key.Equals(propertyName, StringComparison.OrdinalIgnoreCase)) { if (memberMapping != null) { throw new MappingException(System.Data.Entity.Strings.Mapping_Duplicate_PropertyMap_CaseInsensitive( propertyName)); } memberMapping = keyValuePair.Value; } } } return memberMapping; } /// /// Overriding System.Object.ToString to provide better String representation /// for this type. /// public override string ToString() { return this.Identity; } #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
- QilLiteral.cs
- ZoneLinkButton.cs
- InvalidAsynchronousStateException.cs
- TypeDescriptionProviderAttribute.cs
- SiteOfOriginContainer.cs
- TableMethodGenerator.cs
- OleDbEnumerator.cs
- cookieexception.cs
- DataGridViewLinkColumn.cs
- SqlBulkCopy.cs
- FlowDocumentPage.cs
- RowUpdatedEventArgs.cs
- FixedDocumentSequencePaginator.cs
- RangeBase.cs
- ToolStripGrip.cs
- GlyphingCache.cs
- DrawingVisual.cs
- Span.cs
- ModelTypeConverter.cs
- State.cs
- TextDecorationCollection.cs
- StylusCollection.cs
- SessionEndingCancelEventArgs.cs
- XmlC14NWriter.cs
- uribuilder.cs
- WebPartMinimizeVerb.cs
- XmlReader.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- PortCache.cs
- PersonalizationDictionary.cs
- PropertyInformationCollection.cs
- DESCryptoServiceProvider.cs
- NullRuntimeConfig.cs
- DatagramAdapter.cs
- CompensateDesigner.cs
- BamlLocalizableResourceKey.cs
- FrugalList.cs
- DbResourceAllocator.cs
- UpdateRecord.cs
- DocumentOrderQuery.cs
- streamingZipPartStream.cs
- DrawingGroup.cs
- DataProtection.cs
- IsolatedStorage.cs
- DirectionalLight.cs
- WebPartEditorOkVerb.cs
- AssemblyBuilderData.cs
- PriorityQueue.cs
- MaskedTextBoxTextEditor.cs
- PasswordRecoveryDesigner.cs
- TextDpi.cs
- EpmContentDeSerializer.cs
- PenContext.cs
- StaticSiteMapProvider.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- ResourcePermissionBaseEntry.cs
- HttpBrowserCapabilitiesBase.cs
- CryptoStream.cs
- XmlSchemaObjectTable.cs
- QualificationDataItem.cs
- WorkflowEnvironment.cs
- DupHandleConnectionReader.cs
- Rect.cs
- StreamResourceInfo.cs
- TempFiles.cs
- StrongName.cs
- NavigationExpr.cs
- StylusSystemGestureEventArgs.cs
- WebPartEventArgs.cs
- X509ChainPolicy.cs
- RegionInfo.cs
- BaseCAMarshaler.cs
- ErrorProvider.cs
- odbcmetadatacolumnnames.cs
- SafeEventLogReadHandle.cs
- RsaKeyGen.cs
- OrderByBuilder.cs
- StoreItemCollection.Loader.cs
- DataSetUtil.cs
- PerformanceCounterPermissionEntryCollection.cs
- MarginsConverter.cs
- CircleHotSpot.cs
- OdbcUtils.cs
- BindingUtils.cs
- Decimal.cs
- XmlSchemaInfo.cs
- RawStylusInputCustomData.cs
- Operand.cs
- OpacityConverter.cs
- TrackingStringDictionary.cs
- GlyphsSerializer.cs
- Oid.cs
- LowerCaseStringConverter.cs
- DynamicVirtualDiscoSearcher.cs
- CompareInfo.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- counter.cs
- SimpleFieldTemplateFactory.cs
- ControlCachePolicy.cs
- TextSelectionProcessor.cs