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
- TextShapeableCharacters.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- DataObjectEventArgs.cs
- ZipIOCentralDirectoryBlock.cs
- SerializationFieldInfo.cs
- CompoundFileIOPermission.cs
- ImageCodecInfoPrivate.cs
- WizardStepBase.cs
- StylusPointCollection.cs
- FragmentNavigationEventArgs.cs
- LocalizationParserHooks.cs
- DescendentsWalkerBase.cs
- BaseProcessor.cs
- WebPartConnectionsDisconnectVerb.cs
- DrawingGroupDrawingContext.cs
- FacetValueContainer.cs
- FastPropertyAccessor.cs
- AssemblyResourceLoader.cs
- PeerNameRegistration.cs
- KeyGestureConverter.cs
- FieldToken.cs
- BamlRecordWriter.cs
- DocumentationServerProtocol.cs
- TransformGroup.cs
- ExecutorLocksHeldException.cs
- HtmlControl.cs
- CodeAttributeDeclaration.cs
- AuthenticationSection.cs
- ObjectStorage.cs
- RegisteredArrayDeclaration.cs
- LambdaCompiler.Address.cs
- Barrier.cs
- SettingsProviderCollection.cs
- Pts.cs
- DataTableNewRowEvent.cs
- DataGridViewColumnEventArgs.cs
- SkewTransform.cs
- FlowLayoutSettings.cs
- WindowShowOrOpenTracker.cs
- Bold.cs
- PiiTraceSource.cs
- ContextMenuService.cs
- DodSequenceMerge.cs
- FragmentNavigationEventArgs.cs
- EmbeddedMailObjectsCollection.cs
- RoleService.cs
- KnownTypeAttribute.cs
- BindableAttribute.cs
- CssClassPropertyAttribute.cs
- NullableDecimalSumAggregationOperator.cs
- PowerStatus.cs
- TargetPerspective.cs
- ConversionValidationRule.cs
- StreamHelper.cs
- DBCSCodePageEncoding.cs
- CommandHelper.cs
- SqlPersonalizationProvider.cs
- mediaclock.cs
- UpWmlPageAdapter.cs
- CollectionBase.cs
- SerializationObjectManager.cs
- ServiceModelSecurityTokenRequirement.cs
- BitmapCodecInfo.cs
- DependencyPropertyAttribute.cs
- FormatStringEditor.cs
- HttpException.cs
- PostBackTrigger.cs
- UnsignedPublishLicense.cs
- SrgsDocumentParser.cs
- x509utils.cs
- ContextMenu.cs
- PropertyAccessVisitor.cs
- Parsers.cs
- WebSysDescriptionAttribute.cs
- DataGridViewRowPostPaintEventArgs.cs
- X509Utils.cs
- DeviceContext.cs
- MenuAdapter.cs
- precedingsibling.cs
- BinaryCommonClasses.cs
- XslNumber.cs
- TextParaClient.cs
- Oci.cs
- BaseParagraph.cs
- UnsafeNativeMethods.cs
- Msec.cs
- NativeMethods.cs
- DataGridViewCellCollection.cs
- DataSetMappper.cs
- TextPatternIdentifiers.cs
- MemberDescriptor.cs
- WebPartConnectionsDisconnectVerb.cs
- ToolStripSplitButton.cs
- listitem.cs
- BatchStream.cs
- TracingConnectionInitiator.cs
- XmlSchemaSimpleContentExtension.cs
- TagMapInfo.cs
- XmlNamespaceDeclarationsAttribute.cs
- GetRecipientListRequest.cs