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
- XmlReaderSettings.cs
- StylusLogic.cs
- OperationAbortedException.cs
- RegexCapture.cs
- ListControlBoundActionList.cs
- SizeAnimationClockResource.cs
- RectKeyFrameCollection.cs
- OdbcUtils.cs
- ModelUIElement3D.cs
- TransportContext.cs
- OdbcParameter.cs
- PolicyImporterElementCollection.cs
- HttpWebRequestElement.cs
- RankException.cs
- SmtpSection.cs
- ListBindingConverter.cs
- SingleKeyFrameCollection.cs
- XhtmlConformanceSection.cs
- EntityStoreSchemaGenerator.cs
- RoutedEventValueSerializer.cs
- RangeValidator.cs
- Int32EqualityComparer.cs
- ITextView.cs
- NaturalLanguageHyphenator.cs
- ContentElement.cs
- WsatServiceCertificate.cs
- CodeExpressionStatement.cs
- GifBitmapEncoder.cs
- PropertyGeneratedEventArgs.cs
- DataGridViewRowHeaderCell.cs
- RootBrowserWindow.cs
- DefaultSettingsSection.cs
- DocumentReference.cs
- FacetDescription.cs
- UInt32.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- SoapMessage.cs
- ConfigurationStrings.cs
- XmlComplianceUtil.cs
- XmlSchemaAttributeGroup.cs
- TheQuery.cs
- ExpressionLexer.cs
- NumericUpDownAccelerationCollection.cs
- TemplatedMailWebEventProvider.cs
- XmlSchemaAttributeGroupRef.cs
- ExpressionBuilderCollection.cs
- SevenBitStream.cs
- ObjectReaderCompiler.cs
- EntityDataSourceEntitySetNameItem.cs
- CompositeControl.cs
- RegexMatchCollection.cs
- HandleExceptionArgs.cs
- VirtualPathUtility.cs
- ProcessInfo.cs
- ThreadLocal.cs
- CorrelationKey.cs
- XmlAnyElementAttributes.cs
- AttributeQuery.cs
- Inline.cs
- RtfToXamlReader.cs
- OLEDB_Util.cs
- ISCIIEncoding.cs
- CodeChecksumPragma.cs
- BinaryWriter.cs
- TransformConverter.cs
- ChtmlSelectionListAdapter.cs
- SpanIndex.cs
- SqlDataSourceStatusEventArgs.cs
- KeySpline.cs
- SqlDuplicator.cs
- WebSysDisplayNameAttribute.cs
- HttpPostedFile.cs
- ObjectAnimationBase.cs
- ServiceCredentialsSecurityTokenManager.cs
- VariableElement.cs
- ConnectorSelectionGlyph.cs
- TreeView.cs
- CustomErrorsSection.cs
- NameValueCollection.cs
- ZoneButton.cs
- IisTraceListener.cs
- Missing.cs
- DocumentReference.cs
- RSAPKCS1KeyExchangeFormatter.cs
- xmlformatgeneratorstatics.cs
- IQueryable.cs
- OracleMonthSpan.cs
- WindowsFormsHostPropertyMap.cs
- ApplicationSecurityManager.cs
- XmlSchemaAttributeGroupRef.cs
- RegexFCD.cs
- PasswordDeriveBytes.cs
- UIElementPropertyUndoUnit.cs
- TextContainerHelper.cs
- DeobfuscatingStream.cs
- DataSourceHelper.cs
- GenericIdentity.cs
- CodeCommentStatement.cs
- UrlAuthFailedErrorFormatter.cs
- XPathParser.cs