Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Common / DataRecordInfo.cs / 2 / 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
- ListComponentEditor.cs
- DataReaderContainer.cs
- AxisAngleRotation3D.cs
- SafeMILHandleMemoryPressure.cs
- CookieHandler.cs
- EntityDataSourceMemberPath.cs
- _BaseOverlappedAsyncResult.cs
- Encoder.cs
- DateTimeParse.cs
- parserscommon.cs
- ConfigurationConverterBase.cs
- BaseServiceProvider.cs
- DataGridHelper.cs
- WindowsSecurityTokenAuthenticator.cs
- ParallelTimeline.cs
- DiffuseMaterial.cs
- EnumConverter.cs
- SharedUtils.cs
- XmlnsDictionary.cs
- SqlOuterApplyReducer.cs
- EntityParameter.cs
- xmlsaver.cs
- DataErrorValidationRule.cs
- ActiveXSite.cs
- IntSecurity.cs
- SqlConnectionString.cs
- ColorDialog.cs
- ClientSettings.cs
- BindValidationContext.cs
- SqlCacheDependency.cs
- EventRoute.cs
- ComplexBindingPropertiesAttribute.cs
- TextViewBase.cs
- RelativeSource.cs
- SqlDataReaderSmi.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- OutputCacheModule.cs
- ListViewCancelEventArgs.cs
- TextTreeTextBlock.cs
- StylusTouchDevice.cs
- DrawingContextDrawingContextWalker.cs
- _NetworkingPerfCounters.cs
- LOSFormatter.cs
- LogManagementAsyncResult.cs
- MasterPageCodeDomTreeGenerator.cs
- CompositeFontFamily.cs
- TextWriterTraceListener.cs
- HierarchicalDataTemplate.cs
- XmlIgnoreAttribute.cs
- QilUnary.cs
- Light.cs
- XmlAtomicValue.cs
- DefaultPrintController.cs
- FileDialogPermission.cs
- Stylesheet.cs
- Hash.cs
- InstanceHandleConflictException.cs
- DataServiceQueryOfT.cs
- SqlServer2KCompatibilityCheck.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- DragEvent.cs
- AutoGeneratedField.cs
- ContentPosition.cs
- LinearKeyFrames.cs
- ExportOptions.cs
- RectangleF.cs
- TreeViewDataItemAutomationPeer.cs
- ErrorEventArgs.cs
- XsdDataContractImporter.cs
- SqlLiftWhereClauses.cs
- Location.cs
- PropertyPath.cs
- Command.cs
- RsaEndpointIdentity.cs
- GatewayDefinition.cs
- MessageDecoder.cs
- CacheVirtualItemsEvent.cs
- PageRequestManager.cs
- ProxyWebPartConnectionCollection.cs
- XmlWellformedWriter.cs
- RequiredAttributeAttribute.cs
- XPathExpr.cs
- DefaultEventAttribute.cs
- KeyInfo.cs
- ReachDocumentReferenceCollectionSerializer.cs
- ChannelBinding.cs
- X509CertificateValidator.cs
- SecurityUtils.cs
- XmlWrappingWriter.cs
- TransformPattern.cs
- XmlProcessingInstruction.cs
- MasterPageParser.cs
- UrlPath.cs
- BaseAutoFormat.cs
- ListBox.cs
- DynamicDataExtensions.cs
- Binding.cs
- Separator.cs
- ByeMessageCD1.cs
- ToolStripPanelRenderEventArgs.cs