Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / ModelProviders / ColumnProvider.cs / 1305376 / ColumnProvider.cs
using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Web.DynamicData; using System.Web.DynamicData.Util; namespace System.Web.DynamicData.ModelProviders { ////// Base provider class for columns. /// Each provider type (e.g. Linq To Sql, Entity Framework, 3rd party) extends this class. /// public abstract class ColumnProvider { private bool? _isReadOnly; ////// ctor /// /// the table this column belongs to protected ColumnProvider(TableProvider table) { if (table == null) { throw new ArgumentNullException("table"); } Table = table; } ////// readable representation /// ///[SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override string ToString() { // To help identifying objects in debugger return Name ?? base.ToString(); } internal virtual PropertyDescriptor PropertyDescriptor { get { return Table.GetTypeDescriptor().GetProperties().Find(Name, true/*ignoreCase*/); } } public virtual AttributeCollection Attributes { get { var propertyDescriptor = PropertyDescriptor; var attributes = propertyDescriptor != null ? propertyDescriptor.Attributes : AttributeCollection.Empty; return AddDefaultAttributes(this, attributes); } } protected static AttributeCollection AddDefaultAttributes(ColumnProvider columnProvider, AttributeCollection attributes) { List extraAttributes = new List (); // If there is no required attribute and the Provider says required, add one var requiredAttribute = attributes.FirstOrDefault (); if (requiredAttribute == null && !columnProvider.Nullable) { extraAttributes.Add(new RequiredAttribute()); } // If there is no StringLength attribute and it's a string, add one var stringLengthAttribute = attributes.FirstOrDefault (); int maxLength = columnProvider.MaxLength; if (stringLengthAttribute == null && columnProvider.ColumnType == typeof(String) && maxLength > 0) { extraAttributes.Add(new StringLengthAttribute(maxLength)); } // If we need any extra attributes, create a new collection if (extraAttributes.Count > 0) { attributes = AttributeCollection.FromExisting(attributes, extraAttributes.ToArray()); } return attributes; } /// /// The name of the column /// public virtual string Name { get; protected set; } ////// The CLR type of the column /// public virtual Type ColumnType { get; protected set; } ////// Is this column a primary key in its table /// public virtual bool IsPrimaryKey { get; protected set; } ////// Specifies if this column is read only /// public virtual bool IsReadOnly { get { if (_isReadOnly == null) { var propertyDescriptor = PropertyDescriptor; _isReadOnly = propertyDescriptor != null ? propertyDescriptor.IsReadOnly : false; } return _isReadOnly.Value; } protected set { _isReadOnly = value; } } ////// Is it a database generated column /// public virtual bool IsGenerated { get; protected set; } ////// Returns whether the underlying model supports sorting of the table on this column /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sortable", Justification="It's a valid word")] public virtual bool IsSortable { get; protected set; } ////// The maximun length allowed for this column (applies to string columns) /// public virtual int MaxLength { get; protected set; } ////// Does it allow null values (meaning it is not required) /// public virtual bool Nullable { get; protected set; } ////// meant to indicate that a member is an extra property that was declared in a partial class /// public virtual bool IsCustomProperty { get; protected set; } ////// If the column represents and association with anther table, this returns the association information. /// Otherwise, null is returned. /// public virtual AssociationProvider Association { get; protected set; } ////// The table that this column belongs to /// public TableProvider Table { get; private set; } ////// The PropertyInfo of the property that represents this column on the entity type /// public virtual PropertyInfo EntityTypeProperty { get; protected set; } ////// This is set for columns that are part of a foreign key. Note that it is NOT set for /// the strongly typed entity ref columns (though those columns 'use' one or more columns /// where IsForeignKeyComponent is set). /// public virtual bool IsForeignKeyComponent { get; protected set; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Web.DynamicData; using System.Web.DynamicData.Util; namespace System.Web.DynamicData.ModelProviders { ////// Base provider class for columns. /// Each provider type (e.g. Linq To Sql, Entity Framework, 3rd party) extends this class. /// public abstract class ColumnProvider { private bool? _isReadOnly; ////// ctor /// /// the table this column belongs to protected ColumnProvider(TableProvider table) { if (table == null) { throw new ArgumentNullException("table"); } Table = table; } ////// readable representation /// ///[SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override string ToString() { // To help identifying objects in debugger return Name ?? base.ToString(); } internal virtual PropertyDescriptor PropertyDescriptor { get { return Table.GetTypeDescriptor().GetProperties().Find(Name, true/*ignoreCase*/); } } public virtual AttributeCollection Attributes { get { var propertyDescriptor = PropertyDescriptor; var attributes = propertyDescriptor != null ? propertyDescriptor.Attributes : AttributeCollection.Empty; return AddDefaultAttributes(this, attributes); } } protected static AttributeCollection AddDefaultAttributes(ColumnProvider columnProvider, AttributeCollection attributes) { List extraAttributes = new List (); // If there is no required attribute and the Provider says required, add one var requiredAttribute = attributes.FirstOrDefault (); if (requiredAttribute == null && !columnProvider.Nullable) { extraAttributes.Add(new RequiredAttribute()); } // If there is no StringLength attribute and it's a string, add one var stringLengthAttribute = attributes.FirstOrDefault (); int maxLength = columnProvider.MaxLength; if (stringLengthAttribute == null && columnProvider.ColumnType == typeof(String) && maxLength > 0) { extraAttributes.Add(new StringLengthAttribute(maxLength)); } // If we need any extra attributes, create a new collection if (extraAttributes.Count > 0) { attributes = AttributeCollection.FromExisting(attributes, extraAttributes.ToArray()); } return attributes; } /// /// The name of the column /// public virtual string Name { get; protected set; } ////// The CLR type of the column /// public virtual Type ColumnType { get; protected set; } ////// Is this column a primary key in its table /// public virtual bool IsPrimaryKey { get; protected set; } ////// Specifies if this column is read only /// public virtual bool IsReadOnly { get { if (_isReadOnly == null) { var propertyDescriptor = PropertyDescriptor; _isReadOnly = propertyDescriptor != null ? propertyDescriptor.IsReadOnly : false; } return _isReadOnly.Value; } protected set { _isReadOnly = value; } } ////// Is it a database generated column /// public virtual bool IsGenerated { get; protected set; } ////// Returns whether the underlying model supports sorting of the table on this column /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sortable", Justification="It's a valid word")] public virtual bool IsSortable { get; protected set; } ////// The maximun length allowed for this column (applies to string columns) /// public virtual int MaxLength { get; protected set; } ////// Does it allow null values (meaning it is not required) /// public virtual bool Nullable { get; protected set; } ////// meant to indicate that a member is an extra property that was declared in a partial class /// public virtual bool IsCustomProperty { get; protected set; } ////// If the column represents and association with anther table, this returns the association information. /// Otherwise, null is returned. /// public virtual AssociationProvider Association { get; protected set; } ////// The table that this column belongs to /// public TableProvider Table { get; private set; } ////// The PropertyInfo of the property that represents this column on the entity type /// public virtual PropertyInfo EntityTypeProperty { get; protected set; } ////// This is set for columns that are part of a foreign key. Note that it is NOT set for /// the strongly typed entity ref columns (though those columns 'use' one or more columns /// where IsForeignKeyComponent is set). /// public virtual bool IsForeignKeyComponent { get; protected set; } } } // 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
- InvalidOleVariantTypeException.cs
- ToolStripDesignerAvailabilityAttribute.cs
- FilePrompt.cs
- ExtensionDataObject.cs
- DocumentViewerBaseAutomationPeer.cs
- QuotedStringWriteStateInfo.cs
- SymDocumentType.cs
- ExpressionBindings.cs
- TextTreeRootTextBlock.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- TimeSpanConverter.cs
- MinimizableAttributeTypeConverter.cs
- PipeSecurity.cs
- PtsPage.cs
- PrinterResolution.cs
- mda.cs
- cookiecontainer.cs
- NavigationPropertyAccessor.cs
- AppliedDeviceFiltersDialog.cs
- SendActivity.cs
- MethodCallConverter.cs
- _FixedSizeReader.cs
- MulticastOption.cs
- UriScheme.cs
- Domain.cs
- _DomainName.cs
- Html32TextWriter.cs
- XmlDataCollection.cs
- VarRefManager.cs
- CapiSafeHandles.cs
- BrowserCapabilitiesFactory.cs
- ViewCellRelation.cs
- WinFormsSpinner.cs
- FormViewDeleteEventArgs.cs
- ObjectItemAttributeAssemblyLoader.cs
- StylusPointDescription.cs
- TypeNameConverter.cs
- EntityContainerRelationshipSetEnd.cs
- DiscriminatorMap.cs
- CodeNamespaceImport.cs
- CodeDomConfigurationHandler.cs
- WebPartDescription.cs
- Byte.cs
- DescriptionCreator.cs
- PathGradientBrush.cs
- GenericTypeParameterBuilder.cs
- WebPart.cs
- SuppressMergeCheckAttribute.cs
- BaseComponentEditor.cs
- NestPullup.cs
- documentsequencetextcontainer.cs
- MeasureItemEvent.cs
- WindowInteropHelper.cs
- ClientOptions.cs
- DirectoryInfo.cs
- ToolStripItemImageRenderEventArgs.cs
- RangeContentEnumerator.cs
- StateManager.cs
- CodeAttachEventStatement.cs
- InternalConfigRoot.cs
- StreamGeometry.cs
- SslStreamSecurityElement.cs
- IndexedString.cs
- FtpRequestCacheValidator.cs
- TemplatePartAttribute.cs
- LineBreak.cs
- XmlChildNodes.cs
- CommonXSendMessage.cs
- SiteMapNodeCollection.cs
- SafeFreeMibTable.cs
- XmlSequenceWriter.cs
- PageWrapper.cs
- AsyncOperation.cs
- TextBox.cs
- ToolStripDropDownItem.cs
- EditingCommands.cs
- SizeAnimationClockResource.cs
- PointHitTestParameters.cs
- InputProcessorProfilesLoader.cs
- AmbientProperties.cs
- HWStack.cs
- ConstructorBuilder.cs
- BuildManagerHost.cs
- JsonObjectDataContract.cs
- PathGradientBrush.cs
- MemoryStream.cs
- DataGridViewRow.cs
- NativeMethods.cs
- WindowsMenu.cs
- SafeIUnknown.cs
- CurrentChangedEventManager.cs
- Listbox.cs
- IdentifierService.cs
- HScrollProperties.cs
- PingOptions.cs
- InvokeHandlers.cs
- BinaryFormatterWriter.cs
- PeerCollaboration.cs
- DateTimeValueSerializer.cs
- TdsEnums.cs