//--------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner Microsoft // @backupOwner Microsoft //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Data.Common; namespace System.Data.Metadata.Edm { /// /// Initializes a new instance of the RelationshipEndMember class /// public abstract class RelationshipEndMember : EdmMember { #region Constructors /// /// Initializes a new instance of RelationshipEndMember /// /// name of the relationship end member /// Ref type that this end refers to /// The multiplicity of this relationship end /// Thrown if name or endRefType arguments is null /// Thrown if name argument is empty string internal RelationshipEndMember(string name, RefType endRefType, RelationshipMultiplicity multiplicity) : base(name, TypeUsage.Create(endRefType, new FacetValues{ Nullable = false })) { _relationshipMultiplicity = multiplicity; _deleteBehavior = OperationAction.None; } #endregion #region Fields private OperationAction _deleteBehavior; private RelationshipMultiplicity _relationshipMultiplicity; #endregion #region Properties /// /// Returns the operational behaviour for this end /// [MetadataProperty(BuiltInTypeKind.OperationAction, true)] public OperationAction DeleteBehavior { get { return _deleteBehavior; } internal set { Util.ThrowIfReadOnly(this); _deleteBehavior = value; } } /// /// Returns the multiplicity for this relationship end /// [MetadataProperty(BuiltInTypeKind.RelationshipMultiplicity, false)] public RelationshipMultiplicity RelationshipMultiplicity { get { return _relationshipMultiplicity; } } #endregion public EntityType GetEntityType() { if (TypeUsage == null) return null; return (EntityType)((RefType)TypeUsage.EdmType).ElementType; } } }