Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / AssociationType.cs / 3 / AssociationType.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....], [....]
//---------------------------------------------------------------------
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
/// version of the association type
/// dataSpace in which this AssociationType belongs to
/// Thrown if either the name, namespace or version attributes are null
internal AssociationType(string name,
string namespaceName,
DataSpace dataSpace)
: base(name, namespaceName, dataSpace)
{
_referentialConstraints = new ReadOnlyMetadataCollection(new MetadataCollection());
}
#endregion
#region Fields
private readonly ReadOnlyMetadataCollection _referentialConstraints;
private FilteredReadOnlyMetadataCollection _associationEndMembers;
#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;
}
}
#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)
{
if (!(member is AssociationEndMember))
{
throw EntityUtil.AssociationInvalidMembers();
}
}
///
/// 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 [....], [....]
//---------------------------------------------------------------------
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
/// version of the association type
/// dataSpace in which this AssociationType belongs to
/// Thrown if either the name, namespace or version attributes are null
internal AssociationType(string name,
string namespaceName,
DataSpace dataSpace)
: base(name, namespaceName, dataSpace)
{
_referentialConstraints = new ReadOnlyMetadataCollection(new MetadataCollection());
}
#endregion
#region Fields
private readonly ReadOnlyMetadataCollection _referentialConstraints;
private FilteredReadOnlyMetadataCollection _associationEndMembers;
#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;
}
}
#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)
{
if (!(member is AssociationEndMember))
{
throw EntityUtil.AssociationInvalidMembers();
}
}
///
/// 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
- elementinformation.cs
- XamlTypeMapperSchemaContext.cs
- Grant.cs
- OdbcCommandBuilder.cs
- TargetParameterCountException.cs
- StateFinalizationActivity.cs
- AlternateView.cs
- SoapClientProtocol.cs
- StorageAssociationTypeMapping.cs
- DispatcherTimer.cs
- safemediahandle.cs
- ListInitExpression.cs
- Model3DGroup.cs
- XPathNavigator.cs
- SmtpDateTime.cs
- OracleSqlParser.cs
- DefaultTraceListener.cs
- ParseHttpDate.cs
- keycontainerpermission.cs
- WebPart.cs
- TemplateNameScope.cs
- TdsParameterSetter.cs
- ListViewGroup.cs
- mongolianshape.cs
- CodeTypeOfExpression.cs
- RotateTransform.cs
- ProfessionalColors.cs
- StickyNoteHelper.cs
- CriticalFinalizerObject.cs
- WeakReferenceList.cs
- Baml2006ReaderFrame.cs
- SingleConverter.cs
- TCPListener.cs
- XpsTokenContext.cs
- PeerCollaboration.cs
- User.cs
- TranslateTransform.cs
- PagedDataSource.cs
- GetImportFileNameRequest.cs
- ContentElement.cs
- DataGridRowDetailsEventArgs.cs
- RootBuilder.cs
- AstTree.cs
- XmlNodeComparer.cs
- GlobalizationSection.cs
- XmlSchemaSimpleTypeUnion.cs
- Rijndael.cs
- FileEnumerator.cs
- VectorAnimationBase.cs
- ListViewGroupConverter.cs
- InvalidComObjectException.cs
- HtmlInputHidden.cs
- ScrollViewer.cs
- DataMisalignedException.cs
- Rect.cs
- Manipulation.cs
- LayoutSettings.cs
- SerializationFieldInfo.cs
- NGCSerializer.cs
- ManifestResourceInfo.cs
- DataSourceView.cs
- WebPartUserCapability.cs
- Graph.cs
- ToggleProviderWrapper.cs
- Relationship.cs
- OperationAbortedException.cs
- ValidationPropertyAttribute.cs
- KnownIds.cs
- TrailingSpaceComparer.cs
- MarkupProperty.cs
- WebBrowser.cs
- WebControlsSection.cs
- DataControlPagerLinkButton.cs
- CreateParams.cs
- SRDisplayNameAttribute.cs
- TableLayoutPanel.cs
- KeyPressEvent.cs
- ContentDesigner.cs
- HttpListenerContext.cs
- NestPullup.cs
- BrowserCapabilitiesCompiler.cs
- SpecialFolderEnumConverter.cs
- BuildProviderUtils.cs
- Compiler.cs
- controlskin.cs
- SignatureHelper.cs
- EdmEntityTypeAttribute.cs
- ProfileManager.cs
- TreeView.cs
- AlgoModule.cs
- AttributeCollection.cs
- WebPartZoneBaseDesigner.cs
- WebPartEventArgs.cs
- ParallelLoopState.cs
- PerformanceCounterLib.cs
- SimpleWebHandlerParser.cs
- HttpApplicationFactory.cs
- ScalarType.cs
- TextFormatterContext.cs
- DetailsViewRowCollection.cs