Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / DataRecordInfo.cs / 1305376 / DataRecordInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Common { using System.Data; using System.Collections; using System.Collections.Generic; using System.Data.Metadata.Edm; using System.Diagnostics; ////// DataRecordInfo class providing a simple way to access both the type information and the column information. /// public class DataRecordInfo { private readonly System.Collections.ObjectModel.ReadOnlyCollection_fieldMetadata; private readonly TypeUsage _metadata; /// /// Construct DataRecordInfo with list of EdmMembers. /// Each memberInfo must be a member of metadata. /// /// /// public DataRecordInfo(TypeUsage metadata, IEnumerablememberInfo) { EntityUtil.CheckArgumentNull(metadata, "metadata"); IBaseList members = TypeHelpers.GetAllStructuralMembers(metadata.EdmType); List fieldList = new List (members.Count); if (null != memberInfo) { foreach (EdmMember member in memberInfo) { if ((null != member) && (0 <= members.IndexOf(member)) && ((BuiltInTypeKind.EdmProperty == member.BuiltInTypeKind) || // for ComplexType, EntityType; BuiltTypeKind.NaviationProperty not allowed (BuiltInTypeKind.AssociationEndMember == member.BuiltInTypeKind))) // for AssociationType { // each memberInfo must be non-null and be part of Properties or AssociationEndMembers //validate that EdmMembers are from the same type or base type of the passed in metadata. if((member.DeclaringType != metadata.EdmType) && !member.DeclaringType.IsBaseTypeOf(metadata.EdmType)) { throw EntityUtil.Argument(System.Data.Entity.Strings.EdmMembersDefiningTypeDoNotAgreeWithMetadataType); } fieldList.Add(new FieldMetadata(fieldList.Count, member)); } else { // expecting empty memberInfo for non-structural && non-null member part of members if structural throw EntityUtil.Argument("memberInfo"); } } } // expecting structural types to have something at least 1 property // (((null == structural) && (0 == fieldList.Count)) || ((null != structural) && (0 < fieldList.Count))) if (Helper.IsStructuralType(metadata.EdmType) == (0 < fieldList.Count)) { _fieldMetadata = new System.Collections.ObjectModel.ReadOnlyCollection (fieldList); _metadata = metadata; } else { throw EntityUtil.Argument("memberInfo"); } } /// /// Construct FieldMetadata for structuralType.Members from TypeUsage /// internal DataRecordInfo(TypeUsage metadata) { Debug.Assert(null != metadata, "invalid attempt to instantiate DataRecordInfo with null metadata information"); IBaseListstructuralMembers = TypeHelpers.GetAllStructuralMembers(metadata); FieldMetadata[] fieldList = new FieldMetadata[structuralMembers.Count]; for (int i = 0; i < fieldList.Length; ++i) { EdmMember member = structuralMembers[i]; Debug.Assert((BuiltInTypeKind.EdmProperty == member.BuiltInTypeKind) || (BuiltInTypeKind.AssociationEndMember == member.BuiltInTypeKind), "unexpected BuiltInTypeKind for member"); fieldList[i] = new FieldMetadata(i, member); } _fieldMetadata = new System.Collections.ObjectModel.ReadOnlyCollection (fieldList); _metadata = metadata; } /// /// Reusing TypeUsage and FieldMetadata from another EntityRecordInfo which has all the same info /// but with a different EntityKey instance. /// internal DataRecordInfo(DataRecordInfo recordInfo) { _fieldMetadata = recordInfo._fieldMetadata; _metadata = recordInfo._metadata; } ////// Column information. /// public System.Collections.ObjectModel.ReadOnlyCollectionFieldMetadata { get { return _fieldMetadata; } } /// /// Type information. /// public TypeUsage RecordType { get { return _metadata; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Common { using System.Data; using System.Collections; using System.Collections.Generic; using System.Data.Metadata.Edm; using System.Diagnostics; ////// DataRecordInfo class providing a simple way to access both the type information and the column information. /// public class DataRecordInfo { private readonly System.Collections.ObjectModel.ReadOnlyCollection_fieldMetadata; private readonly TypeUsage _metadata; /// /// Construct DataRecordInfo with list of EdmMembers. /// Each memberInfo must be a member of metadata. /// /// /// public DataRecordInfo(TypeUsage metadata, IEnumerablememberInfo) { EntityUtil.CheckArgumentNull(metadata, "metadata"); IBaseList members = TypeHelpers.GetAllStructuralMembers(metadata.EdmType); List fieldList = new List (members.Count); if (null != memberInfo) { foreach (EdmMember member in memberInfo) { if ((null != member) && (0 <= members.IndexOf(member)) && ((BuiltInTypeKind.EdmProperty == member.BuiltInTypeKind) || // for ComplexType, EntityType; BuiltTypeKind.NaviationProperty not allowed (BuiltInTypeKind.AssociationEndMember == member.BuiltInTypeKind))) // for AssociationType { // each memberInfo must be non-null and be part of Properties or AssociationEndMembers //validate that EdmMembers are from the same type or base type of the passed in metadata. if((member.DeclaringType != metadata.EdmType) && !member.DeclaringType.IsBaseTypeOf(metadata.EdmType)) { throw EntityUtil.Argument(System.Data.Entity.Strings.EdmMembersDefiningTypeDoNotAgreeWithMetadataType); } fieldList.Add(new FieldMetadata(fieldList.Count, member)); } else { // expecting empty memberInfo for non-structural && non-null member part of members if structural throw EntityUtil.Argument("memberInfo"); } } } // expecting structural types to have something at least 1 property // (((null == structural) && (0 == fieldList.Count)) || ((null != structural) && (0 < fieldList.Count))) if (Helper.IsStructuralType(metadata.EdmType) == (0 < fieldList.Count)) { _fieldMetadata = new System.Collections.ObjectModel.ReadOnlyCollection (fieldList); _metadata = metadata; } else { throw EntityUtil.Argument("memberInfo"); } } /// /// Construct FieldMetadata for structuralType.Members from TypeUsage /// internal DataRecordInfo(TypeUsage metadata) { Debug.Assert(null != metadata, "invalid attempt to instantiate DataRecordInfo with null metadata information"); IBaseListstructuralMembers = TypeHelpers.GetAllStructuralMembers(metadata); FieldMetadata[] fieldList = new FieldMetadata[structuralMembers.Count]; for (int i = 0; i < fieldList.Length; ++i) { EdmMember member = structuralMembers[i]; Debug.Assert((BuiltInTypeKind.EdmProperty == member.BuiltInTypeKind) || (BuiltInTypeKind.AssociationEndMember == member.BuiltInTypeKind), "unexpected BuiltInTypeKind for member"); fieldList[i] = new FieldMetadata(i, member); } _fieldMetadata = new System.Collections.ObjectModel.ReadOnlyCollection (fieldList); _metadata = metadata; } /// /// Reusing TypeUsage and FieldMetadata from another EntityRecordInfo which has all the same info /// but with a different EntityKey instance. /// internal DataRecordInfo(DataRecordInfo recordInfo) { _fieldMetadata = recordInfo._fieldMetadata; _metadata = recordInfo._metadata; } ////// Column information. /// public System.Collections.ObjectModel.ReadOnlyCollectionFieldMetadata { get { return _fieldMetadata; } } /// /// Type information. /// public TypeUsage RecordType { get { return _metadata; } } } } // 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
- SchemaInfo.cs
- XhtmlBasicListAdapter.cs
- WebPartConnectionsCancelVerb.cs
- StreamFormatter.cs
- InternalUserCancelledException.cs
- Deserializer.cs
- WebContext.cs
- XmlSiteMapProvider.cs
- CapabilitiesRule.cs
- Trigger.cs
- XPathExpr.cs
- DataGridViewCellCancelEventArgs.cs
- XhtmlConformanceSection.cs
- JumpList.cs
- _NativeSSPI.cs
- RowBinding.cs
- ListViewGroupConverter.cs
- NameValueConfigurationElement.cs
- SqlDelegatedTransaction.cs
- HtmlLink.cs
- BaseValidator.cs
- DrawingContext.cs
- Variable.cs
- SafeFileMappingHandle.cs
- CanonicalFontFamilyReference.cs
- BaseAddressElementCollection.cs
- OneOf.cs
- DataObjectMethodAttribute.cs
- HostedElements.cs
- Type.cs
- HttpConfigurationSystem.cs
- FullTextLine.cs
- LocationUpdates.cs
- CompositeDesignerAccessibleObject.cs
- DoubleLink.cs
- DataRecordInternal.cs
- ZipIOCentralDirectoryFileHeader.cs
- OLEDB_Enum.cs
- FormsAuthenticationConfiguration.cs
- ListenerElementsCollection.cs
- TemplateControl.cs
- DataFormats.cs
- OptionUsage.cs
- ObjectStateFormatter.cs
- PageParserFilter.cs
- InternalBufferOverflowException.cs
- ToolStripRendererSwitcher.cs
- SymmetricKeyWrap.cs
- HealthMonitoringSectionHelper.cs
- ContentPresenter.cs
- Quad.cs
- DmlSqlGenerator.cs
- DataGridViewToolTip.cs
- BaseUriHelper.cs
- RunWorkerCompletedEventArgs.cs
- WebPartManager.cs
- DeferredElementTreeState.cs
- IsolatedStorageSecurityState.cs
- Underline.cs
- ProtocolsSection.cs
- MappedMetaModel.cs
- CollectionViewGroupInternal.cs
- CacheMemory.cs
- ConfigXmlReader.cs
- XmlElementAttribute.cs
- HtmlElementEventArgs.cs
- MetadataSource.cs
- ConnectorRouter.cs
- VisualBrush.cs
- WebPartZoneCollection.cs
- ApplicationSettingsBase.cs
- RsaSecurityTokenAuthenticator.cs
- AssemblyUtil.cs
- RoleManagerModule.cs
- TreeNode.cs
- XmlSchemaRedefine.cs
- AuthenticationConfig.cs
- ActivityTypeResolver.xaml.cs
- ObjectHandle.cs
- PropertyDescriptors.cs
- FormatPage.cs
- AutomationPropertyInfo.cs
- ArgumentElement.cs
- _NestedMultipleAsyncResult.cs
- MediaScriptCommandRoutedEventArgs.cs
- DataServiceHostFactory.cs
- TraceXPathNavigator.cs
- SecurityKeyUsage.cs
- RoleGroupCollection.cs
- WrappedOptions.cs
- InternalCache.cs
- SubqueryRules.cs
- SslStream.cs
- ZoneButton.cs
- AsmxEndpointPickerExtension.cs
- BuildProviderCollection.cs
- SelectionEditingBehavior.cs
- ListBoxDesigner.cs
- TextEditorTyping.cs
- DataTableReader.cs