Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Validation / ExtentKey.cs / 1 / 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.
//----------------------------------------------------------------------
//
// 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
- GetPageNumberCompletedEventArgs.cs
- Slider.cs
- WaitHandle.cs
- FaultConverter.cs
- ResourceDisplayNameAttribute.cs
- Interlocked.cs
- BypassElementCollection.cs
- ScriptManagerProxy.cs
- RIPEMD160Managed.cs
- CombinedGeometry.cs
- __Filters.cs
- Funcletizer.cs
- HashHelper.cs
- Compiler.cs
- Int16AnimationBase.cs
- ControlDesignerState.cs
- Utils.cs
- PenContexts.cs
- PriorityBindingExpression.cs
- PresentationAppDomainManager.cs
- MaterializeFromAtom.cs
- DecimalFormatter.cs
- ResourceCollectionInfo.cs
- AngleUtil.cs
- NavigationProgressEventArgs.cs
- RegexInterpreter.cs
- ItemContainerPattern.cs
- HttpResponse.cs
- WsdlContractConversionContext.cs
- SqlCachedBuffer.cs
- ProtocolsConfigurationEntry.cs
- XPathDocument.cs
- ReadOnlyHierarchicalDataSourceView.cs
- XmlText.cs
- TemplatePagerField.cs
- COM2ExtendedBrowsingHandler.cs
- GridViewUpdateEventArgs.cs
- QilStrConcatenator.cs
- CheckoutException.cs
- TraceContextEventArgs.cs
- Point3DConverter.cs
- EntryIndex.cs
- HtmlWindowCollection.cs
- BitmapImage.cs
- RightsManagementPermission.cs
- OutputCacheProfileCollection.cs
- Parallel.cs
- TextServicesCompartmentContext.cs
- QuestionEventArgs.cs
- EmissiveMaterial.cs
- CompensationTokenData.cs
- DispatcherFrame.cs
- ImageBrush.cs
- DataRowView.cs
- WebReferencesBuildProvider.cs
- SignatureHelper.cs
- ExceptionValidationRule.cs
- FamilyCollection.cs
- ExpandCollapsePattern.cs
- EnumBuilder.cs
- Polyline.cs
- AssociationSetMetadata.cs
- Substitution.cs
- PersonalizationState.cs
- LineUtil.cs
- BaseCAMarshaler.cs
- ApplicationServicesHostFactory.cs
- CqlLexerHelpers.cs
- DateTimeFormatInfo.cs
- OperandQuery.cs
- CrossSiteScriptingValidation.cs
- ListDataBindEventArgs.cs
- ObjectStateManager.cs
- RegionInfo.cs
- Timer.cs
- EntityTypeBase.cs
- TableItemProviderWrapper.cs
- FontDriver.cs
- Canvas.cs
- OwnerDrawPropertyBag.cs
- TrackingServices.cs
- WSDualHttpSecurity.cs
- LineSegment.cs
- Internal.cs
- SelectionPattern.cs
- MatrixTransform3D.cs
- FunctionImportMapping.cs
- DoubleUtil.cs
- SoapAttributeOverrides.cs
- SrgsGrammarCompiler.cs
- SessionEndedEventArgs.cs
- Registry.cs
- ToggleProviderWrapper.cs
- SafeCertificateStore.cs
- DataGridViewCellStateChangedEventArgs.cs
- AccessDataSource.cs
- OSEnvironmentHelper.cs
- ProvidersHelper.cs
- PrefixHandle.cs
- AttributeQuery.cs