Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / ModelProviders / AssociationProvider.cs / 1305376 / AssociationProvider.cs
using System.Collections.ObjectModel;
using System.Globalization;
using System.Web.Resources;
namespace System.Web.DynamicData.ModelProviders {
///
/// Specifies the association cardinality
///
public enum AssociationDirection {
///
/// 1-1
///
OneToOne,
///
/// one to many
///
OneToMany,
///
/// many to one
///
ManyToOne,
///
/// many to many
///
ManyToMany
}
///
/// Base provider class for associations between columns
/// Each provider type (e.g. Linq To Sql, Entity Framework, 3rd party) extends this class.
///
public abstract class AssociationProvider {
private TableProvider _toTable;
///
/// The type of association
///
public virtual AssociationDirection Direction { get; protected set; }
///
/// The source column of the association
///
public virtual ColumnProvider FromColumn { get; protected set; }
///
/// The destination table of the association
///
public virtual TableProvider ToTable {
get {
if (_toTable != null) {
return _toTable;
}
if (ToColumn != null) {
return ToColumn.Table;
}
return null;
}
protected set {
_toTable = value;
}
}
///
/// The destination column of the association
///
public virtual ColumnProvider ToColumn { get; protected set; }
///
/// Returns true if the From Column part of the primary key of its table
/// e.g. Order and Product are PKs in the Order_Details table
///
public virtual bool IsPrimaryKeyInThisTable { get; protected set; }
///
/// The names of the underlying foreign keys that make up this association
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification="It's a readonly collection, so the warning is incorrect")]
public virtual ReadOnlyCollection ForeignKeyNames { get; protected set; }
///
/// Returns a string representing the sort expression that would be used for
/// sorting the column represented by this association. The parameter is the
/// property of the strongly typed entity used as the sort key for that entity.
/// For example, assume that this association represents the Category column
/// in the Products table. The sortColumn paramater is "CategoryName",
/// meaning that this method is being asked to return the sort expression for
/// sorting the Category column by the CategoryName property of the Category entity.
/// The result sort expression would be "Category.CategoryName".
/// The result of this method should be affected by whether the underlying data
/// model is capable of sorting the entity by the given sort column (see
/// ColumnProvider.IsSortable). The method can return a null value to indicate
/// that sorting is not supported.
///
/// the column to sort the entity by
/// the sort expression string, or null if sort is not supported for the
/// given sort column
public virtual string GetSortExpression(ColumnProvider sortColumn) {
return null;
}
internal string GetSortExpression(ColumnProvider sortColumn, string format) {
if (Direction == AssociationDirection.OneToMany || Direction == AssociationDirection.ManyToMany) {
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
DynamicDataResources.AssociationProvider_DirectionDoesNotSupportSorting,
Direction));
}
if (sortColumn == null) {
throw new ArgumentNullException("sortColumn");
}
if (!ToTable.Columns.Contains(sortColumn)) {
throw new ArgumentException(DynamicDataResources.AssociationProvider_SortColumnDoesNotBelongToEndTable, "sortColumn");
}
if (sortColumn.IsSortable) {
return String.Format(CultureInfo.InvariantCulture, format, FromColumn.Name, sortColumn.Name);
} else {
return null;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaComplexContentExtension.cs
- FormatException.cs
- Visitors.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- DataGridColumnHeader.cs
- OverlappedContext.cs
- CharAnimationUsingKeyFrames.cs
- TempFiles.cs
- RichTextBoxConstants.cs
- DetailsView.cs
- BasicCellRelation.cs
- ClientSettingsSection.cs
- EntityViewContainer.cs
- CssTextWriter.cs
- SimpleType.cs
- IndexOutOfRangeException.cs
- ClonableStack.cs
- CodeSubDirectoriesCollection.cs
- CultureMapper.cs
- OdbcFactory.cs
- SqlClientFactory.cs
- XamlVector3DCollectionSerializer.cs
- HitTestParameters3D.cs
- Metadata.cs
- ColorPalette.cs
- Expander.cs
- QilGenerator.cs
- HttpGetServerProtocol.cs
- Vector3DConverter.cs
- CultureData.cs
- SecurityTokenResolver.cs
- VideoDrawing.cs
- SamlAuthenticationClaimResource.cs
- WorkflowControlClient.cs
- GlobalProxySelection.cs
- StrokeCollection.cs
- Assert.cs
- AlignmentYValidation.cs
- VirtualPathProvider.cs
- PolyLineSegmentFigureLogic.cs
- HtmlControl.cs
- HtmlButton.cs
- GeneralTransform3D.cs
- ChtmlCommandAdapter.cs
- xdrvalidator.cs
- RemoteWebConfigurationHostServer.cs
- XmlILModule.cs
- InvalidateEvent.cs
- LocatorPart.cs
- DetailsViewRowCollection.cs
- SystemDiagnosticsSection.cs
- UnmanagedHandle.cs
- ModuleElement.cs
- WindowProviderWrapper.cs
- __TransparentProxy.cs
- HighlightVisual.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- WindowsListViewScroll.cs
- DeploymentSectionCache.cs
- WebScriptEnablingElement.cs
- AppPool.cs
- NonPrimarySelectionGlyph.cs
- SmtpReplyReaderFactory.cs
- RegisteredHiddenField.cs
- SettingsPropertyValueCollection.cs
- MaxValueConverter.cs
- ReadOnlyCollectionBuilder.cs
- ToolStripAdornerWindowService.cs
- BulletChrome.cs
- InheritablePropertyChangeInfo.cs
- NaturalLanguageHyphenator.cs
- TransactionOptions.cs
- DataGridTablesFactory.cs
- SymbolDocumentInfo.cs
- FileDialogCustomPlacesCollection.cs
- PrintEvent.cs
- _SSPIWrapper.cs
- SingleConverter.cs
- AppSettingsSection.cs
- OrderingExpression.cs
- TrackingWorkflowEventArgs.cs
- BasicHttpMessageSecurity.cs
- _emptywebproxy.cs
- ManagementException.cs
- ISessionStateStore.cs
- ExceptionRoutedEventArgs.cs
- DefaultBindingPropertyAttribute.cs
- ParamArrayAttribute.cs
- TemplateInstanceAttribute.cs
- ConfigXmlDocument.cs
- TriggerAction.cs
- EDesignUtil.cs
- QuaternionConverter.cs
- TrustLevelCollection.cs
- KeyToListMap.cs
- SinglePageViewer.cs
- StateDesigner.Helpers.cs
- AuthenticationModuleElementCollection.cs
- Inline.cs