Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / AssociationType.cs / 1305376 / AssociationType.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using System.Threading;
using System.Diagnostics;
namespace System.Data.Metadata.Edm
{
///
/// Represents the Edm Association Type
///
public sealed class AssociationType : RelationshipType
{
#region Constructors
///
/// Initializes a new instance of Association Type with the given name, namespace, version and ends
///
/// name of the association type
/// namespace of the association type
/// is this a foreign key (FK) relationship?
/// dataSpace in which this AssociationType belongs to
/// Thrown if either the name, namespace or version attributes are null
internal AssociationType(string name,
string namespaceName,
bool foreignKey,
DataSpace dataSpace)
: base(name, namespaceName, dataSpace)
{
_referentialConstraints = new ReadOnlyMetadataCollection(new MetadataCollection());
_isForeignKey = foreignKey;
}
#endregion
#region Fields
private readonly ReadOnlyMetadataCollection _referentialConstraints;
private FilteredReadOnlyMetadataCollection _associationEndMembers;
private readonly bool _isForeignKey;
#endregion
#region Properties
///
/// Returns the kind of the type
///
public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.AssociationType; } }
///
/// Returns the list of ends for this association type
///
public ReadOnlyMetadataCollection AssociationEndMembers
{
get
{
Debug.Assert(IsReadOnly, "this is a wrapper around this.Members, don't call it during metadata loading, only call it after the metadata is set to readonly");
if (null == _associationEndMembers)
{
Interlocked.CompareExchange(ref _associationEndMembers,
new FilteredReadOnlyMetadataCollection(
this.Members, Helper.IsAssociationEndMember), null);
}
return _associationEndMembers;
}
}
///
/// Returns the list of constraints for this association type
///
[MetadataProperty(BuiltInTypeKind.ReferentialConstraint, true)]
public ReadOnlyMetadataCollection ReferentialConstraints
{
get
{
return _referentialConstraints;
}
}
///
/// Indicates whether this is a foreign key relationship.
///
[MetadataProperty(PrimitiveTypeKind.Boolean, false)]
public bool IsForeignKey
{
get
{
return _isForeignKey;
}
}
#endregion
#region Methods
///
/// Validates a EdmMember object to determine if it can be added to this type's
/// Members collection. If this method returns without throwing, it is assumed
/// the member is valid.
///
/// The member to validate
/// Thrown if the member is not an AssociationEndMember
internal override void ValidateMemberForAdd(EdmMember member)
{
Debug.Assert(
(member is AssociationEndMember),
"Only members of type AssociationEndMember may be added to Association definitions.");
}
///
/// Sets this item to be readonly, once this is set, the item will never be writable again.
///
internal override void SetReadOnly()
{
if (!IsReadOnly)
{
base.SetReadOnly();
this.ReferentialConstraints.Source.SetReadOnly();
}
}
///
/// Add the given referential constraint to the collection of referential constraints
///
///
internal void AddReferentialConstraint(ReferentialConstraint referentialConstraint)
{
this.ReferentialConstraints.Source.Add(referentialConstraint);
}
#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.Data.Common;
using System.Text;
using System.Threading;
using System.Diagnostics;
namespace System.Data.Metadata.Edm
{
///
/// Represents the Edm Association Type
///
public sealed class AssociationType : RelationshipType
{
#region Constructors
///
/// Initializes a new instance of Association Type with the given name, namespace, version and ends
///
/// name of the association type
/// namespace of the association type
/// is this a foreign key (FK) relationship?
/// dataSpace in which this AssociationType belongs to
/// Thrown if either the name, namespace or version attributes are null
internal AssociationType(string name,
string namespaceName,
bool foreignKey,
DataSpace dataSpace)
: base(name, namespaceName, dataSpace)
{
_referentialConstraints = new ReadOnlyMetadataCollection(new MetadataCollection());
_isForeignKey = foreignKey;
}
#endregion
#region Fields
private readonly ReadOnlyMetadataCollection _referentialConstraints;
private FilteredReadOnlyMetadataCollection _associationEndMembers;
private readonly bool _isForeignKey;
#endregion
#region Properties
///
/// Returns the kind of the type
///
public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.AssociationType; } }
///
/// Returns the list of ends for this association type
///
public ReadOnlyMetadataCollection AssociationEndMembers
{
get
{
Debug.Assert(IsReadOnly, "this is a wrapper around this.Members, don't call it during metadata loading, only call it after the metadata is set to readonly");
if (null == _associationEndMembers)
{
Interlocked.CompareExchange(ref _associationEndMembers,
new FilteredReadOnlyMetadataCollection(
this.Members, Helper.IsAssociationEndMember), null);
}
return _associationEndMembers;
}
}
///
/// Returns the list of constraints for this association type
///
[MetadataProperty(BuiltInTypeKind.ReferentialConstraint, true)]
public ReadOnlyMetadataCollection ReferentialConstraints
{
get
{
return _referentialConstraints;
}
}
///
/// Indicates whether this is a foreign key relationship.
///
[MetadataProperty(PrimitiveTypeKind.Boolean, false)]
public bool IsForeignKey
{
get
{
return _isForeignKey;
}
}
#endregion
#region Methods
///
/// Validates a EdmMember object to determine if it can be added to this type's
/// Members collection. If this method returns without throwing, it is assumed
/// the member is valid.
///
/// The member to validate
/// Thrown if the member is not an AssociationEndMember
internal override void ValidateMemberForAdd(EdmMember member)
{
Debug.Assert(
(member is AssociationEndMember),
"Only members of type AssociationEndMember may be added to Association definitions.");
}
///
/// Sets this item to be readonly, once this is set, the item will never be writable again.
///
internal override void SetReadOnly()
{
if (!IsReadOnly)
{
base.SetReadOnly();
this.ReferentialConstraints.Source.SetReadOnly();
}
}
///
/// Add the given referential constraint to the collection of referential constraints
///
///
internal void AddReferentialConstraint(ReferentialConstraint referentialConstraint)
{
this.ReferentialConstraints.Source.Add(referentialConstraint);
}
#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
- DataFormat.cs
- RegexCode.cs
- DateTimeConverter.cs
- PointUtil.cs
- StrokeFIndices.cs
- PeerNameRegistration.cs
- CodeObjectCreateExpression.cs
- DataViewManagerListItemTypeDescriptor.cs
- ImageResources.Designer.cs
- ClientRoleProvider.cs
- ConnectionsZoneAutoFormat.cs
- QueryOpeningEnumerator.cs
- FontStyles.cs
- MouseBinding.cs
- MultilineStringConverter.cs
- AttachedPropertyBrowsableAttribute.cs
- Sql8ExpressionRewriter.cs
- PeerApplication.cs
- GiveFeedbackEvent.cs
- CodeTypeDeclarationCollection.cs
- ListViewDesigner.cs
- TrackingStringDictionary.cs
- __ConsoleStream.cs
- EmptyArray.cs
- TextTreeTextNode.cs
- MessageOperationFormatter.cs
- VerificationAttribute.cs
- ClosableStream.cs
- SqlCommand.cs
- ColorContextHelper.cs
- BadImageFormatException.cs
- AggregateNode.cs
- DataObject.cs
- AtomEntry.cs
- RepeatEnumerable.cs
- ProviderMetadata.cs
- Expander.cs
- ReadOnlyTernaryTree.cs
- ReturnEventArgs.cs
- ExtendedProtectionPolicyElement.cs
- UserControl.cs
- ComContractElementCollection.cs
- BinaryConverter.cs
- TrackPoint.cs
- SkinIDTypeConverter.cs
- Label.cs
- IDispatchConstantAttribute.cs
- Timer.cs
- HtmlElementErrorEventArgs.cs
- Part.cs
- DesignerVerb.cs
- FactoryRecord.cs
- Parser.cs
- ConfigurationPropertyAttribute.cs
- SkewTransform.cs
- WebSysDefaultValueAttribute.cs
- PixelShader.cs
- Underline.cs
- ImageButton.cs
- PageCodeDomTreeGenerator.cs
- Screen.cs
- ContentValidator.cs
- NonParentingControl.cs
- ScrollViewerAutomationPeer.cs
- ClientUrlResolverWrapper.cs
- HelpPage.cs
- DBPropSet.cs
- AdjustableArrowCap.cs
- OdbcConnectionString.cs
- ImpersonateTokenRef.cs
- NameNode.cs
- CLSCompliantAttribute.cs
- MonthChangedEventArgs.cs
- Block.cs
- dbenumerator.cs
- CommandID.cs
- StylusPoint.cs
- login.cs
- RootAction.cs
- EventKeyword.cs
- HtmlControlPersistable.cs
- ChannelServices.cs
- ProtocolElement.cs
- MarkupExtensionReturnTypeAttribute.cs
- DataView.cs
- RequestResizeEvent.cs
- SoapTypeAttribute.cs
- ToolStripLabel.cs
- MasterPageParser.cs
- RelatedEnd.cs
- Int32CollectionValueSerializer.cs
- Operator.cs
- FileAuthorizationModule.cs
- JapaneseCalendar.cs
- XmlCharacterData.cs
- ScriptingAuthenticationServiceSection.cs
- UnrecognizedPolicyAssertionElement.cs
- IdentityManager.cs
- ParentUndoUnit.cs
- ToReply.cs