Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Validation / ExtentKey.cs / 1305376 / ExtentKey.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Data.Common.Utils;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Data.Metadata.Edm;
namespace System.Data.Mapping.ViewGeneration.Structures
{
// This class represents the key of constraint on values that a relation slot may have
internal class ExtentKey : InternalBase
{
#region Constructors
// effects: Creates a key object for an extent (present in each MemberPath)
// with the fields corresponding to keyFields
internal ExtentKey(IEnumerable keyFields)
{
m_keyFields = new List(keyFields);
}
#endregion
#region Fields
// All the key fields in an entity set
private List m_keyFields;
#endregion
#region Properties
internal IEnumerable KeyFields
{
get { return m_keyFields; }
}
#endregion
#region Methods
// effects: Determines all the keys (unique and primary for
// entityType) for entityType and returns a key. "prefix" gives the
// path of the extent or end of a relationship in a relationship set
// -- prefix is prepended to the entity's key fields to get the full memberpath
internal static List GetKeysForEntityType(MemberPath prefix, EntityType entityType)
{
// CHANGE_[....]_MULTIPLE_KEYS: currently there is a single key only. Need to support
// keys inside complex types + unique keys
ExtentKey key = GetPrimaryKeyForEntityType(prefix, entityType);
List keys = new List();
keys.Add(key);
return keys;
}
// effects: Returns the key for entityType prefixed with prefix (for
// its memberPath)
internal static ExtentKey GetPrimaryKeyForEntityType(MemberPath prefix, EntityType entityType)
{
List keyFields = new List();
foreach (EdmMember keyMember in entityType.KeyMembers)
{
Debug.Assert(keyMember != null, "Bogus key member in metadata");
keyFields.Add(new MemberPath(prefix, keyMember));
}
// Just have one key for now
ExtentKey key = new ExtentKey(keyFields);
return key;
}
// effects: Returns a key correspnding to all the fields in different
// ends of relationtype prefixed with "prefix"
internal static ExtentKey GetKeyForRelationType(MemberPath prefix, AssociationType relationType)
{
List keyFields = new List();
foreach (AssociationEndMember endMember in relationType.AssociationEndMembers)
{
MemberPath endPrefix = new MemberPath(prefix, endMember);
EntityType entityType = MetadataHelper.GetEntityTypeForEnd(endMember);
ExtentKey primaryKey = GetPrimaryKeyForEntityType(endPrefix, entityType);
keyFields.AddRange(primaryKey.KeyFields);
}
ExtentKey key = new ExtentKey(keyFields);
return key;
}
internal string ToUserString()
{
string result = StringUtil.ToCommaSeparatedStringSorted(m_keyFields);
return result;
}
internal override void ToCompactString(StringBuilder builder)
{
StringUtil.ToCommaSeparatedStringSorted(builder, m_keyFields);
}
#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
- DbConnectionPool.cs
- ProxyDataContractResolver.cs
- OptimisticConcurrencyException.cs
- SmtpDigestAuthenticationModule.cs
- ListBox.cs
- DictationGrammar.cs
- StretchValidation.cs
- MetafileHeaderWmf.cs
- CollectionMarkupSerializer.cs
- AppSettingsReader.cs
- WebCategoryAttribute.cs
- DecoderNLS.cs
- DetailsViewDeletedEventArgs.cs
- SafeEventHandle.cs
- Utils.cs
- CaseInsensitiveComparer.cs
- FormViewDeletedEventArgs.cs
- Main.cs
- OdbcFactory.cs
- UIPropertyMetadata.cs
- NumericExpr.cs
- _RegBlobWebProxyDataBuilder.cs
- LayoutManager.cs
- SkipStoryboardToFill.cs
- RuleSettingsCollection.cs
- LoginDesignerUtil.cs
- SelectionRange.cs
- Vector3DKeyFrameCollection.cs
- ComponentChangingEvent.cs
- SequentialOutput.cs
- IDReferencePropertyAttribute.cs
- EncodingNLS.cs
- SrgsItemList.cs
- WebServiceData.cs
- formatstringdialog.cs
- DataGridViewCheckBoxColumn.cs
- XmlSchemaValidationException.cs
- PresentationSource.cs
- NegotiateStream.cs
- ImageInfo.cs
- SchemaAttDef.cs
- DocumentViewerHelper.cs
- AnnotationResource.cs
- Properties.cs
- SchemaEntity.cs
- EnumType.cs
- TimeZone.cs
- Security.cs
- Rect3D.cs
- LockedActivityGlyph.cs
- RequestStatusBarUpdateEventArgs.cs
- TextEditorCharacters.cs
- CriticalHandle.cs
- InternalControlCollection.cs
- EntityProviderFactory.cs
- _ConnectionGroup.cs
- ReadOnlyDataSource.cs
- DebugView.cs
- UICuesEvent.cs
- AsymmetricSignatureDeformatter.cs
- ContainerAction.cs
- BindingWorker.cs
- Html32TextWriter.cs
- ViewGenResults.cs
- SQLChars.cs
- MobileUserControl.cs
- CngKeyBlobFormat.cs
- MessageProperties.cs
- CapabilitiesUse.cs
- VScrollBar.cs
- StandardOleMarshalObject.cs
- HotSpotCollection.cs
- SmiSettersStream.cs
- CodeGenerator.cs
- AnimationTimeline.cs
- InlineUIContainer.cs
- ThicknessAnimationUsingKeyFrames.cs
- BitVec.cs
- TextElementEnumerator.cs
- RectKeyFrameCollection.cs
- ByeMessageApril2005.cs
- CodeTypeReference.cs
- DataBoundControlHelper.cs
- RegexCompiler.cs
- DataView.cs
- CacheChildrenQuery.cs
- BrowserPolicyValidator.cs
- EventManager.cs
- ErrorTableItemStyle.cs
- BamlRecords.cs
- SignatureResourcePool.cs
- _NetworkingPerfCounters.cs
- RuleAttributes.cs
- Vector3DKeyFrameCollection.cs
- WindowsAuthenticationEventArgs.cs
- ReflectTypeDescriptionProvider.cs
- BackgroundFormatInfo.cs
- CatalogZoneBase.cs
- LifetimeServices.cs
- Gdiplus.cs