Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Common / DataRecordInfo.cs / 3 / 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
- UserPersonalizationStateInfo.cs
- TargetControlTypeCache.cs
- RowUpdatingEventArgs.cs
- ObjectConverter.cs
- SymmetricKey.cs
- FunctionOverloadResolver.cs
- PlainXmlDeserializer.cs
- ItemsPresenter.cs
- ByteViewer.cs
- ToolStripContentPanelRenderEventArgs.cs
- ResXDataNode.cs
- FactoryMaker.cs
- GeneralTransformCollection.cs
- EntityDataSourceEntitySetNameItem.cs
- SignatureHelper.cs
- AsyncSerializedWorker.cs
- GlyphShapingProperties.cs
- ProfileGroupSettings.cs
- XamlStream.cs
- IndexedString.cs
- MarginsConverter.cs
- DataControlReferenceCollection.cs
- DocumentOrderComparer.cs
- Attachment.cs
- ProxyHelper.cs
- NameTable.cs
- MetadataExchangeBindings.cs
- DataServiceStreamResponse.cs
- BitmapEffectDrawingContextWalker.cs
- DeploymentSection.cs
- DatatypeImplementation.cs
- IResourceProvider.cs
- BooleanFacetDescriptionElement.cs
- TextElementEnumerator.cs
- UnaryExpression.cs
- SQLConvert.cs
- Transform3D.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- DataGridViewRowsAddedEventArgs.cs
- XmlTypeMapping.cs
- CngUIPolicy.cs
- LogEntry.cs
- ModelPerspective.cs
- AgileSafeNativeMemoryHandle.cs
- DrawingServices.cs
- MenuItemBinding.cs
- RegexCode.cs
- ThemeDirectoryCompiler.cs
- DbProviderFactoriesConfigurationHandler.cs
- DataRelationPropertyDescriptor.cs
- UpdateRecord.cs
- XPathScanner.cs
- SQLMoneyStorage.cs
- NonClientArea.cs
- DispatcherExceptionEventArgs.cs
- XsltSettings.cs
- GeometryCollection.cs
- RadioButtonStandardAdapter.cs
- SkewTransform.cs
- HMAC.cs
- RectangleF.cs
- BitmapImage.cs
- SqlTransaction.cs
- TextMarkerSource.cs
- SiteMapDataSource.cs
- PixelFormat.cs
- X509KeyIdentifierClauseType.cs
- WebPartActionVerb.cs
- MsmqEncryptionAlgorithm.cs
- MetadataUtilsSmi.cs
- MenuAdapter.cs
- ToolStripDropTargetManager.cs
- ForceCopyBuildProvider.cs
- SystemFonts.cs
- ContentTextAutomationPeer.cs
- ErrorActivity.cs
- ProviderBase.cs
- SecurityException.cs
- COM2PropertyBuilderUITypeEditor.cs
- DelegateSerializationHolder.cs
- CharEnumerator.cs
- TextServicesProperty.cs
- CodeFieldReferenceExpression.cs
- IChannel.cs
- BidPrivateBase.cs
- unitconverter.cs
- ExpressionTextBox.xaml.cs
- LayoutManager.cs
- ActivityPropertyReference.cs
- DecoderBestFitFallback.cs
- SchemaObjectWriter.cs
- Matrix3DStack.cs
- TemplateControlCodeDomTreeGenerator.cs
- FileDialogPermission.cs
- ContentValidator.cs
- CommonProperties.cs
- AjaxFrameworkAssemblyAttribute.cs
- PrivilegedConfigurationManager.cs
- InvalidComObjectException.cs
- ValidationSummary.cs