Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / NavigationProperty.cs / 2 / NavigationProperty.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Summary description for Association. /// [System.Diagnostics.DebuggerDisplay("Name={Name}, Relationship={_unresolvedRelationshipName}, FromRole={_unresolvedFromEndRole}, ToRole={_unresolvedToEndRole}")] internal sealed class NavigationProperty : Property { private string _unresolvedFromEndRole = null; private string _unresolvedToEndRole = null; private string _unresolvedRelationshipName = null; private IRelationshipEnd _fromEnd = null; private IRelationshipEnd _toEnd = null; private IRelationship _relationship = null; ////// /// /// public NavigationProperty(SchemaEntityType parent) : base(parent) { } ////// /// public new SchemaEntityType ParentElement { get { return base.ParentElement as SchemaEntityType; } } internal IRelationship Relationship { get { return _relationship; } } internal IRelationshipEnd ToEnd { get { return _toEnd; } } internal IRelationshipEnd FromEnd { get { return _fromEnd; } } ////// Gets the Type of the property /// public override SchemaType Type { get { if (_toEnd == null || _toEnd.Type == null) { return null; } return _toEnd.Type; } } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.Relationship)) { HandleAssociationAttribute(reader); return true; } else if (CanHandleAttribute(reader, XmlConstants.FromRole)) { HandleFromRoleAttribute(reader); return true; } else if (CanHandleAttribute(reader, XmlConstants.ToRole)) { HandleToRoleAttribute(reader); return true; } return false; } ////// /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); SchemaType element; if (!Schema.ResolveTypeName(this, _unresolvedRelationshipName, out element)) return; _relationship = element as IRelationship; if (_relationship == null) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyRelationshipNotRelationship(_unresolvedRelationshipName)); return; } bool foundBothEnds = true; if (!_relationship.TryGetEnd(_unresolvedFromEndRole, out _fromEnd)) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyUndefinedRole(_unresolvedFromEndRole, _relationship.FQName)); foundBothEnds = false; } if (!_relationship.TryGetEnd(_unresolvedToEndRole, out _toEnd)) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyUndefinedRole(_unresolvedToEndRole, _relationship.FQName)); foundBothEnds = false; } if (foundBothEnds && _fromEnd == _toEnd) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyRolesCannotBeTheSame); } } ////// /// internal override void Validate() { base.Validate(); System.Diagnostics.Debug.Assert(_fromEnd != null && _toEnd != null, "FromEnd and ToEnd must not be null in Validate. ResolveNames must have resolved it or added error"); if (_fromEnd.Type != ParentElement) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyBadFromRoleType(this.Name, _fromEnd.Type.FQName, _fromEnd.Name, _relationship.FQName, ParentElement.FQName)); } StructuredType type = _toEnd.Type; } #region Private Methods ////// /// /// private void HandleToRoleAttribute(XmlReader reader) { _unresolvedToEndRole = HandleUndottedNameAttribute(reader, _unresolvedToEndRole); } ////// /// /// private void HandleFromRoleAttribute(XmlReader reader) { _unresolvedFromEndRole = HandleUndottedNameAttribute(reader, _unresolvedFromEndRole); } ////// /// /// private void HandleAssociationAttribute(XmlReader reader) { if (_unresolvedRelationshipName != null) { AddAlreadyDefinedError(reader); return; } string association; if (!Utils.GetDottedName(this.Schema, reader, out association)) return; _unresolvedRelationshipName = association; } #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.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Summary description for Association. /// [System.Diagnostics.DebuggerDisplay("Name={Name}, Relationship={_unresolvedRelationshipName}, FromRole={_unresolvedFromEndRole}, ToRole={_unresolvedToEndRole}")] internal sealed class NavigationProperty : Property { private string _unresolvedFromEndRole = null; private string _unresolvedToEndRole = null; private string _unresolvedRelationshipName = null; private IRelationshipEnd _fromEnd = null; private IRelationshipEnd _toEnd = null; private IRelationship _relationship = null; ////// /// /// public NavigationProperty(SchemaEntityType parent) : base(parent) { } ////// /// public new SchemaEntityType ParentElement { get { return base.ParentElement as SchemaEntityType; } } internal IRelationship Relationship { get { return _relationship; } } internal IRelationshipEnd ToEnd { get { return _toEnd; } } internal IRelationshipEnd FromEnd { get { return _fromEnd; } } ////// Gets the Type of the property /// public override SchemaType Type { get { if (_toEnd == null || _toEnd.Type == null) { return null; } return _toEnd.Type; } } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.Relationship)) { HandleAssociationAttribute(reader); return true; } else if (CanHandleAttribute(reader, XmlConstants.FromRole)) { HandleFromRoleAttribute(reader); return true; } else if (CanHandleAttribute(reader, XmlConstants.ToRole)) { HandleToRoleAttribute(reader); return true; } return false; } ////// /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); SchemaType element; if (!Schema.ResolveTypeName(this, _unresolvedRelationshipName, out element)) return; _relationship = element as IRelationship; if (_relationship == null) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyRelationshipNotRelationship(_unresolvedRelationshipName)); return; } bool foundBothEnds = true; if (!_relationship.TryGetEnd(_unresolvedFromEndRole, out _fromEnd)) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyUndefinedRole(_unresolvedFromEndRole, _relationship.FQName)); foundBothEnds = false; } if (!_relationship.TryGetEnd(_unresolvedToEndRole, out _toEnd)) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyUndefinedRole(_unresolvedToEndRole, _relationship.FQName)); foundBothEnds = false; } if (foundBothEnds && _fromEnd == _toEnd) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyRolesCannotBeTheSame); } } ////// /// internal override void Validate() { base.Validate(); System.Diagnostics.Debug.Assert(_fromEnd != null && _toEnd != null, "FromEnd and ToEnd must not be null in Validate. ResolveNames must have resolved it or added error"); if (_fromEnd.Type != ParentElement) { AddError(ErrorCode.BadNavigationProperty, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.BadNavigationPropertyBadFromRoleType(this.Name, _fromEnd.Type.FQName, _fromEnd.Name, _relationship.FQName, ParentElement.FQName)); } StructuredType type = _toEnd.Type; } #region Private Methods ////// /// /// private void HandleToRoleAttribute(XmlReader reader) { _unresolvedToEndRole = HandleUndottedNameAttribute(reader, _unresolvedToEndRole); } ////// /// /// private void HandleFromRoleAttribute(XmlReader reader) { _unresolvedFromEndRole = HandleUndottedNameAttribute(reader, _unresolvedFromEndRole); } ////// /// /// private void HandleAssociationAttribute(XmlReader reader) { if (_unresolvedRelationshipName != null) { AddAlreadyDefinedError(reader); return; } string association; if (!Utils.GetDottedName(this.Schema, reader, out association)) return; _unresolvedRelationshipName = association; } #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
- Run.cs
- Error.cs
- TreeWalkHelper.cs
- DPTypeDescriptorContext.cs
- Brush.cs
- TagElement.cs
- ImageBrush.cs
- SendActivityEventArgs.cs
- TypeBuilder.cs
- FragmentQueryProcessor.cs
- XmlAnyAttributeAttribute.cs
- ListBoxAutomationPeer.cs
- HwndProxyElementProvider.cs
- XmlTextAttribute.cs
- ConnectorDragDropGlyph.cs
- _NativeSSPI.cs
- PropertyGridEditorPart.cs
- HebrewCalendar.cs
- ToolBarButtonClickEvent.cs
- HttpModuleActionCollection.cs
- DataListCommandEventArgs.cs
- SAPICategories.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Region.cs
- CompositeFontInfo.cs
- PtsHelper.cs
- JapaneseCalendar.cs
- SQLBinary.cs
- PathGradientBrush.cs
- TextCharacters.cs
- SqlDataSourceWizardForm.cs
- SafeNativeMethods.cs
- XmlAtomicValue.cs
- SmiTypedGetterSetter.cs
- ObjectDataSourceView.cs
- ChtmlTextWriter.cs
- WindowsStatic.cs
- DataMisalignedException.cs
- _TLSstream.cs
- TreeBuilder.cs
- DetailsViewModeEventArgs.cs
- XappLauncher.cs
- CodeDomSerializerException.cs
- XmlAnyElementAttribute.cs
- EventDescriptor.cs
- IDataContractSurrogate.cs
- GridViewUpdatedEventArgs.cs
- ColumnResizeUndoUnit.cs
- Tuple.cs
- DebugView.cs
- ComplexPropertyEntry.cs
- CharConverter.cs
- ObjectSet.cs
- OuterGlowBitmapEffect.cs
- RayHitTestParameters.cs
- TextServicesContext.cs
- TreeNodeBinding.cs
- TimelineClockCollection.cs
- HexParser.cs
- ISAPIWorkerRequest.cs
- WebBrowser.cs
- PropertyEmitterBase.cs
- DebugInfoGenerator.cs
- ComponentChangedEvent.cs
- CompoundFileDeflateTransform.cs
- parserscommon.cs
- HMACSHA256.cs
- BinHexEncoder.cs
- Queue.cs
- _Win32.cs
- BamlLocalizer.cs
- PerformanceCounterCategory.cs
- ArrayMergeHelper.cs
- MouseCaptureWithinProperty.cs
- DBSqlParserTable.cs
- ConsoleCancelEventArgs.cs
- ProviderUtil.cs
- KerberosSecurityTokenAuthenticator.cs
- SqlDataSource.cs
- PolygonHotSpot.cs
- HtmlImage.cs
- XmlDocumentSerializer.cs
- ChannelDispatcherCollection.cs
- Unit.cs
- ResXDataNode.cs
- Int32RectConverter.cs
- BooleanAnimationUsingKeyFrames.cs
- HttpModuleAction.cs
- UserInitiatedNavigationPermission.cs
- BuildProvider.cs
- DoubleCollection.cs
- PropertyDescriptor.cs
- MachineKeyConverter.cs
- XmlTextReaderImplHelpers.cs
- RadioButtonBaseAdapter.cs
- DragSelectionMessageFilter.cs
- FixedLineResult.cs
- OdbcDataReader.cs
- PolicyLevel.cs
- ExpressionWriter.cs