Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / EntityContainerRelationshipSetEnd.cs / 1305376 / EntityContainerRelationshipSetEnd.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an RelationshipSetEnd element. /// internal class EntityContainerRelationshipSetEnd : SchemaElement { private IRelationshipEnd _relationshipEnd; private string _unresolvedEntitySetName; private EntityContainerEntitySet _entitySet; ////// Constructs an EntityContainerRelationshipSetEnd /// /// Reference to the schema element. public EntityContainerRelationshipSetEnd( EntityContainerRelationshipSet parentElement ) : base( parentElement ) { } ////// the End in the parent�s Association that this element refers to /// public IRelationshipEnd RelationshipEnd { get { return _relationshipEnd; } internal set { _relationshipEnd = value; } } public EntityContainerEntitySet EntitySet { get { return _entitySet; } internal set { _entitySet = value; } } protected override bool ProhibitAttribute(string namespaceUri, string localName) { if (base.ProhibitAttribute(namespaceUri, localName)) { return true; } if (namespaceUri == null && localName == XmlConstants.Name) { return false; } return false; } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.EntitySet)) { HandleEntitySetAttribute(reader); return true; } return false; } ////// This is the method that is called when an EntitySet Attribute is encountered. /// /// The XmlRead positned at the extent attribute. private void HandleEntitySetAttribute( XmlReader reader ) { if (Schema.DataModel == SchemaDataModelOption.ProviderDataModel) { // ssdl will take anything, because this is the table name, and we // can't predict what the vendor will need in a table name _unresolvedEntitySetName = reader.Value; } else { _unresolvedEntitySetName = HandleUndottedNameAttribute(reader, _unresolvedEntitySetName); } } ////// Used during the resolve phase to resolve the type name to the object that represents that type /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); if ( _entitySet == null ) { _entitySet = this.ParentElement.ParentElement.FindEntitySet( _unresolvedEntitySetName ); if ( _entitySet == null ) { AddError( ErrorCode.InvalidEndEntitySet, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidEntitySetNameReference(_unresolvedEntitySetName, Name ) ); } } } ////// Do all validation for this element here, and delegate to all sub elements /// internal override void Validate() { base.Validate(); if ( _relationshipEnd == null || _entitySet == null ) { return; } // We need to allow 2 kind of scenarios: // 1> If you have a relationship type defined between Customer and Order, then you can have a association set in // which the Customer end refers to a Entity Set of type GoodCustomer where GoodCustomer type derives from Customer // 2> If you have a relationship type defined between GoodCustomer and Order, then you can have a relationship // set which GoodCustomer end refers to an entity set whose entity type is Customer (where GoodCustomer derives // from Customer). This scenario enables us to support scenarios where you want specific types in an entity set // to take part in a relationship. if ( !_relationshipEnd.Type.IsOfType( _entitySet.EntityType ) && !_entitySet.EntityType.IsOfType( _relationshipEnd.Type )) { AddError( ErrorCode.InvalidEndEntitySet, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidEndEntitySetTypeMismatch(_relationshipEnd.Name ) ); } } ////// The parent element as an EntityContainerProperty /// internal new EntityContainerRelationshipSet ParentElement { get { return (EntityContainerRelationshipSet)( base.ParentElement ); } } } } // 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
- BorderSidesEditor.cs
- ComAdminInterfaces.cs
- OleDbParameter.cs
- TdsParser.cs
- ListDataHelper.cs
- InProcStateClientManager.cs
- FixedSOMElement.cs
- CodeSnippetExpression.cs
- AutomationElementIdentifiers.cs
- CachedFontFace.cs
- Quad.cs
- EntityDataReader.cs
- AnnotationResourceChangedEventArgs.cs
- GridView.cs
- BmpBitmapEncoder.cs
- GeneralTransform3DGroup.cs
- TrackingProfile.cs
- uribuilder.cs
- WeakReferenceList.cs
- EncoderBestFitFallback.cs
- Utils.cs
- CallContext.cs
- CompiledQuery.cs
- DecimalConverter.cs
- __Filters.cs
- SubMenuStyleCollection.cs
- Size.cs
- WizardPanelChangingEventArgs.cs
- PieceNameHelper.cs
- SectionXmlInfo.cs
- ReadOnlyMetadataCollection.cs
- HttpHostedTransportConfiguration.cs
- UIElementIsland.cs
- MasterPageBuildProvider.cs
- AncestorChangedEventArgs.cs
- CodeTypeDeclaration.cs
- Panel.cs
- TextSelectionHighlightLayer.cs
- ObjectConverter.cs
- LongValidatorAttribute.cs
- SqlDataSourceSelectingEventArgs.cs
- ConstructorNeedsTagAttribute.cs
- Operators.cs
- WindowsRichEdit.cs
- ServiceBuildProvider.cs
- Thickness.cs
- SoapAttributeAttribute.cs
- ModuleElement.cs
- DataGridViewCellParsingEventArgs.cs
- DeclarativeCatalogPart.cs
- ListViewInsertEventArgs.cs
- StructuralCache.cs
- XmlCharacterData.cs
- PairComparer.cs
- ConsumerConnectionPoint.cs
- RSAOAEPKeyExchangeFormatter.cs
- SqlParameter.cs
- WebPartAuthorizationEventArgs.cs
- DATA_BLOB.cs
- BindingWorker.cs
- XmlBufferReader.cs
- SQLResource.cs
- XPathDocumentIterator.cs
- _HeaderInfo.cs
- MexServiceChannelBuilder.cs
- WindowsFormsDesignerOptionService.cs
- ClientFormsIdentity.cs
- SubtreeProcessor.cs
- CustomBindingElement.cs
- AvTraceFormat.cs
- SelectionRange.cs
- ChannelManager.cs
- WCFBuildProvider.cs
- CursorConverter.cs
- X509CertificateValidationMode.cs
- UnsettableComboBox.cs
- LinkConverter.cs
- DefaultValueTypeConverter.cs
- SecurityProtocolFactory.cs
- SchemaHelper.cs
- PipelineModuleStepContainer.cs
- DataListCommandEventArgs.cs
- UniformGrid.cs
- DataPagerCommandEventArgs.cs
- HttpConfigurationContext.cs
- WorkflowOwnerAsyncResult.cs
- XPathSelfQuery.cs
- TextBoxBase.cs
- SystemWebCachingSectionGroup.cs
- OleDbDataReader.cs
- MethodRental.cs
- DesignerHierarchicalDataSourceView.cs
- JoinGraph.cs
- Token.cs
- OSEnvironmentHelper.cs
- TemplateBamlRecordReader.cs
- LongSumAggregationOperator.cs
- LinearGradientBrush.cs
- TextBoxView.cs
- WebBrowserNavigatedEventHandler.cs