Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Objects / DataClasses / RelationshipNavigation.cs / 1 / RelationshipNavigation.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Data.Common; using System.Globalization; using System.Text; namespace System.Data.Objects.DataClasses { ////// This class describes a relationship navigation from the /// navigation property on one entity to another entity. It is /// used throughout the collections and refs system to describe a /// relationship and to connect from the navigation property on /// one end of a relationship to the navigation property on the /// other end. /// // devnote: Might be able to change this back to a valuetype given its current purpose [Serializable] internal class RelationshipNavigation { // ------------ // Constructors // ------------ ////// Creates a navigation object with the given relationship /// name, role name for the source and role name for the /// destination. /// /// Canonical-space name of the relationship. /// Name of the role/navigation property which is the source of the navigation. /// Name of the role/navigation property which is the destination of the navigation. internal RelationshipNavigation(string relationshipName, string from, string to) { EntityUtil.CheckStringArgument(relationshipName, "relationshipName"); EntityUtil.CheckStringArgument(from, "from"); EntityUtil.CheckStringArgument(to, "to"); _relationshipName = relationshipName; _from = from; _to = to; } // ------ // Fields // ------ // The following fields are serialized. Adding or removing a serialized field is considered // a breaking change. This includes changing the field type or field name of existing // serialized fields. If you need to make this kind of change, it may be possible, but it // will require some custom serialization/deserialization code. private readonly string _relationshipName; private readonly string _from; private readonly string _to; [NonSerialized] private RelationshipNavigation _reverse; // ---------- // Properties // ---------- ////// Canonical-space relationship name. /// internal string RelationshipName { get { return _relationshipName; } } ////// Role/navigation property name for the source of this navigation. /// internal string From { get { return _from; } } ////// Role/navigation property name for the destination of this navigation. /// internal string To { get { return _to; } } ////// The "reverse" version of this navigation. /// internal RelationshipNavigation Reverse { get { if (_reverse == null) { // the reverse relationship is exactly like this // one but from & to are switched _reverse = new RelationshipNavigation(_relationshipName, _to, _from); } return _reverse; } } ////// Compares this instance to a given Navigation by their values. /// public override bool Equals(object obj) { RelationshipNavigation compareTo = obj as RelationshipNavigation; return ((this == compareTo) || ((null != this) && (null != compareTo) && (this.RelationshipName == compareTo.RelationshipName) && (this.From == compareTo.From) && (this.To == compareTo.To))); } ////// Returns a value-based hash code. /// ///the hash value of this Navigation public override int GetHashCode() { return this.RelationshipName.GetHashCode(); } // ------- // Methods // ------- ////// ToString is provided to simplify debugging, etc. /// public override string ToString() { return String.Format(CultureInfo.InvariantCulture, "RelationshipNavigation: ({0},{1},{2})", _relationshipName, _from, _to); } } } // 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.Data.Common; using System.Globalization; using System.Text; namespace System.Data.Objects.DataClasses { ////// This class describes a relationship navigation from the /// navigation property on one entity to another entity. It is /// used throughout the collections and refs system to describe a /// relationship and to connect from the navigation property on /// one end of a relationship to the navigation property on the /// other end. /// // devnote: Might be able to change this back to a valuetype given its current purpose [Serializable] internal class RelationshipNavigation { // ------------ // Constructors // ------------ ////// Creates a navigation object with the given relationship /// name, role name for the source and role name for the /// destination. /// /// Canonical-space name of the relationship. /// Name of the role/navigation property which is the source of the navigation. /// Name of the role/navigation property which is the destination of the navigation. internal RelationshipNavigation(string relationshipName, string from, string to) { EntityUtil.CheckStringArgument(relationshipName, "relationshipName"); EntityUtil.CheckStringArgument(from, "from"); EntityUtil.CheckStringArgument(to, "to"); _relationshipName = relationshipName; _from = from; _to = to; } // ------ // Fields // ------ // The following fields are serialized. Adding or removing a serialized field is considered // a breaking change. This includes changing the field type or field name of existing // serialized fields. If you need to make this kind of change, it may be possible, but it // will require some custom serialization/deserialization code. private readonly string _relationshipName; private readonly string _from; private readonly string _to; [NonSerialized] private RelationshipNavigation _reverse; // ---------- // Properties // ---------- ////// Canonical-space relationship name. /// internal string RelationshipName { get { return _relationshipName; } } ////// Role/navigation property name for the source of this navigation. /// internal string From { get { return _from; } } ////// Role/navigation property name for the destination of this navigation. /// internal string To { get { return _to; } } ////// The "reverse" version of this navigation. /// internal RelationshipNavigation Reverse { get { if (_reverse == null) { // the reverse relationship is exactly like this // one but from & to are switched _reverse = new RelationshipNavigation(_relationshipName, _to, _from); } return _reverse; } } ////// Compares this instance to a given Navigation by their values. /// public override bool Equals(object obj) { RelationshipNavigation compareTo = obj as RelationshipNavigation; return ((this == compareTo) || ((null != this) && (null != compareTo) && (this.RelationshipName == compareTo.RelationshipName) && (this.From == compareTo.From) && (this.To == compareTo.To))); } ////// Returns a value-based hash code. /// ///the hash value of this Navigation public override int GetHashCode() { return this.RelationshipName.GetHashCode(); } // ------- // Methods // ------- ////// ToString is provided to simplify debugging, etc. /// public override string ToString() { return String.Format(CultureInfo.InvariantCulture, "RelationshipNavigation: ({0},{1},{2})", _relationshipName, _from, _to); } } } // 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
- ObjectSet.cs
- BaseCollection.cs
- CodeTypeMember.cs
- RetrieveVirtualItemEventArgs.cs
- DetailsViewPagerRow.cs
- DynamicPropertyHolder.cs
- Set.cs
- CreateBookmarkScope.cs
- ToolStripSplitButton.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- SpellerStatusTable.cs
- FontInfo.cs
- CodeAttributeDeclarationCollection.cs
- IndicCharClassifier.cs
- SystemIcmpV6Statistics.cs
- ConnectorDragDropGlyph.cs
- Utilities.cs
- DictionaryBase.cs
- TextTreeUndo.cs
- ReadOnlyHierarchicalDataSource.cs
- WebBrowser.cs
- PlatformCulture.cs
- Interlocked.cs
- DbTransaction.cs
- XamlToRtfParser.cs
- WpfKnownTypeInvoker.cs
- NullRuntimeConfig.cs
- ProviderMetadataCachedInformation.cs
- WebRequestModuleElement.cs
- WpfSharedXamlSchemaContext.cs
- TimelineClockCollection.cs
- SQLSingleStorage.cs
- PageThemeCodeDomTreeGenerator.cs
- MsmqMessageProperty.cs
- SafeProcessHandle.cs
- ContextStaticAttribute.cs
- SimpleTableProvider.cs
- ProcessHostMapPath.cs
- IApplicationTrustManager.cs
- XmlArrayItemAttribute.cs
- GenericParameterDataContract.cs
- WebPartMenuStyle.cs
- DataServiceProcessingPipelineEventArgs.cs
- StorageBasedPackageProperties.cs
- Separator.cs
- ManagementEventArgs.cs
- QueryCacheEntry.cs
- BindingNavigator.cs
- TextCharacters.cs
- OpenCollectionAsyncResult.cs
- TreeChangeInfo.cs
- RepeaterItemEventArgs.cs
- RadioButtonList.cs
- OrderedEnumerableRowCollection.cs
- StylusPointPropertyUnit.cs
- RowToFieldTransformer.cs
- TransactionValidationBehavior.cs
- RoutedCommand.cs
- CollectionConverter.cs
- CompilationSection.cs
- UTF8Encoding.cs
- CanonicalizationDriver.cs
- TextFormatterHost.cs
- JsonFormatWriterGenerator.cs
- HierarchicalDataBoundControl.cs
- PolyBezierSegment.cs
- SqlAliaser.cs
- DictionaryEntry.cs
- GenericEnumConverter.cs
- WSTrustFeb2005.cs
- Visual.cs
- FixedNode.cs
- ControlIdConverter.cs
- LineSegment.cs
- XmlSignatureProperties.cs
- DefaultCommandConverter.cs
- Formatter.cs
- TextTreeRootNode.cs
- UniqueConstraint.cs
- WindowsGraphics2.cs
- GrammarBuilder.cs
- WindowInteropHelper.cs
- MemoryRecordBuffer.cs
- EntityEntry.cs
- ConnectionsZone.cs
- TextTreeUndo.cs
- SuppressIldasmAttribute.cs
- DiscoveryServerProtocol.cs
- MimeMultiPart.cs
- BackgroundWorker.cs
- PathStreamGeometryContext.cs
- DrawListViewColumnHeaderEventArgs.cs
- WorkflowFileItem.cs
- HtmlToClrEventProxy.cs
- KnownColorTable.cs
- SecurityTokenException.cs
- TextSchema.cs
- SchemaElementLookUpTableEnumerator.cs
- SoapCodeExporter.cs
- NotifyCollectionChangedEventArgs.cs