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
- ListenerElementsCollection.cs
- RawStylusInputCustomDataList.cs
- HtmlInputHidden.cs
- GCHandleCookieTable.cs
- RequestQueue.cs
- PrivilegeNotHeldException.cs
- HttpWriter.cs
- ToolTip.cs
- SymbolType.cs
- GradientBrush.cs
- AsymmetricSignatureDeformatter.cs
- ModuleBuilderData.cs
- DocumentViewer.cs
- CodeValidator.cs
- GenericsNotImplementedException.cs
- ContainerParagraph.cs
- AnnotationHighlightLayer.cs
- LineSegment.cs
- SystemThemeKey.cs
- HebrewCalendar.cs
- VisemeEventArgs.cs
- JoinTreeSlot.cs
- ListBoxItemAutomationPeer.cs
- XmlSchemaCompilationSettings.cs
- OverrideMode.cs
- CallbackHandler.cs
- StrokeNodeData.cs
- Itemizer.cs
- TextElementAutomationPeer.cs
- Symbol.cs
- WebPartEditorCancelVerb.cs
- GeneralTransform3DTo2DTo3D.cs
- ItemList.cs
- QilScopedVisitor.cs
- Validator.cs
- StyleSelector.cs
- DataGrid.cs
- Vector.cs
- SubtreeProcessor.cs
- MenuItemStyleCollection.cs
- ManualResetEvent.cs
- TableRow.cs
- CodeExpressionRuleDeclaration.cs
- NumericPagerField.cs
- StackSpiller.Temps.cs
- SpeechRecognizer.cs
- StrongNameUtility.cs
- XmlReturnReader.cs
- Keyboard.cs
- XPathMessageFilterElementComparer.cs
- HttpVersion.cs
- ReadWriteSpinLock.cs
- WorkflowWebHostingModule.cs
- ControlCachePolicy.cs
- login.cs
- Package.cs
- SetterBase.cs
- UserControlCodeDomTreeGenerator.cs
- AutomationProperty.cs
- DataGridViewRowCancelEventArgs.cs
- RegexCharClass.cs
- ZipPackagePart.cs
- EditorZoneBase.cs
- GlyphCache.cs
- AuthenticationModeHelper.cs
- SystemThemeKey.cs
- PropertyGroupDescription.cs
- RuntimeResourceSet.cs
- XamlSerializationHelper.cs
- DES.cs
- ACL.cs
- CharacterShapingProperties.cs
- Control.cs
- _HTTPDateParse.cs
- HtmlInputCheckBox.cs
- TextParagraphProperties.cs
- ConstructorNeedsTagAttribute.cs
- PeerNode.cs
- BitArray.cs
- AuthenticationService.cs
- ProvideValueServiceProvider.cs
- StrokeRenderer.cs
- FormsAuthenticationConfiguration.cs
- Compress.cs
- ApplicationServiceHelper.cs
- WizardForm.cs
- PropertiesTab.cs
- TemplateControlParser.cs
- MulticastIPAddressInformationCollection.cs
- OutputScopeManager.cs
- CheckBoxField.cs
- Parallel.cs
- DataSourceComponent.cs
- SingleResultAttribute.cs
- DocumentApplication.cs
- BevelBitmapEffect.cs
- RequestReplyCorrelator.cs
- ResourceDefaultValueAttribute.cs
- PromptStyle.cs
- EdmTypeAttribute.cs