Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Common / InheritanceRules.cs / 1305376 / InheritanceRules.cs
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq.Expressions; using System.Reflection; using System.Text; using System.Linq; using System.Data.Linq.Mapping; using System.Data.Linq.Provider; namespace System.Data.Linq.SqlClient { ////// This class defines the rules for inheritance behaviors. The rules: /// /// (1) The same field may not be mapped to different database columns. /// The DistinguishedMemberName and AreSameMember methods describe what 'same' means between two MemberInfos. /// (2) Discriminators held in fixed-length fields in the database don't need /// to be manually padded in inheritance mapping [InheritanceMapping(Code='x')]. /// /// static class InheritanceRules { ////// Creates a name that is the same when the member should be considered 'same' /// for the purposes of the inheritance feature. /// internal static object DistinguishedMemberName(MemberInfo mi) { PropertyInfo pi = mi as PropertyInfo; FieldInfo fi = mi as FieldInfo; if (fi != null) { // Human readable variant: // return "fi:" + mi.Name + ":" + mi.DeclaringType; return new MetaPosition(mi); } else if (pi != null) { MethodInfo meth = null; if (pi.CanRead) { meth = pi.GetGetMethod(); } if (meth == null && pi.CanWrite) { meth = pi.GetSetMethod(); } bool isVirtual = meth != null && meth.IsVirtual; // Human readable variant: // return "pi:" + mi.Name + ":" + (isVirtual ? "virtual" : mi.DeclaringType.ToString()); if (isVirtual) { return mi.Name; } else { return new MetaPosition(mi); } } else { throw Error.ArgumentOutOfRange("mi"); } } ////// Compares two MemberInfos for 'same-ness'. /// internal static bool AreSameMember(MemberInfo mi1, MemberInfo mi2) { return DistinguishedMemberName(mi1).Equals(DistinguishedMemberName(mi2)); } ////// The representation of a inheritance code when mapped to a specific provider type. /// internal static object InheritanceCodeForClientCompare(object rawCode, System.Data.Linq.SqlClient.ProviderType providerType) { // If its a fixed-size string type in the store then pad it with spaces so that // comparing the string on the client agrees with the value returnd on the store. if (providerType.IsFixedSize && rawCode.GetType()==typeof(string)) { string s = (string) rawCode; if (providerType.Size.HasValue && s.Length!=providerType.Size) { s = s.PadRight(providerType.Size.Value).Substring(0,providerType.Size.Value); } return s; } return rawCode; } } } // 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
- ILGenerator.cs
- SocketException.cs
- Substitution.cs
- WhitespaceRuleReader.cs
- SinglePageViewer.cs
- ASCIIEncoding.cs
- WebPartZoneCollection.cs
- TimeIntervalCollection.cs
- DiagnosticsConfigurationHandler.cs
- TextRunTypographyProperties.cs
- ResourceBinder.cs
- MetaData.cs
- TreeViewTemplateSelector.cs
- SystemIPGlobalStatistics.cs
- CreateUserWizard.cs
- OdbcException.cs
- Size3D.cs
- XmlJsonReader.cs
- WebPartActionVerb.cs
- InstanceData.cs
- DispatcherProcessingDisabled.cs
- FocusChangedEventArgs.cs
- SmiTypedGetterSetter.cs
- RoleManagerModule.cs
- JsonSerializer.cs
- AnnotationService.cs
- EncryptedKeyIdentifierClause.cs
- ClientRoleProvider.cs
- MarshalByRefObject.cs
- LoginUtil.cs
- XmlSerializationGeneratedCode.cs
- Cursor.cs
- Camera.cs
- AnnouncementEndpointElement.cs
- FunctionOverloadResolver.cs
- BatchParser.cs
- TextDpi.cs
- XdrBuilder.cs
- DiagnosticStrings.cs
- ChineseLunisolarCalendar.cs
- NullReferenceException.cs
- XPathBinder.cs
- DockPatternIdentifiers.cs
- MessageBox.cs
- CultureInfoConverter.cs
- ListChangedEventArgs.cs
- MaskPropertyEditor.cs
- WebControl.cs
- FrugalMap.cs
- GridViewColumnCollection.cs
- SortQuery.cs
- BatchParser.cs
- Version.cs
- OleStrCAMarshaler.cs
- VisualTarget.cs
- FakeModelItemImpl.cs
- ServiceSecurityContext.cs
- diagnosticsswitches.cs
- CompiledELinqQueryState.cs
- PageAdapter.cs
- ListViewGroup.cs
- DoubleLinkList.cs
- ProfilePropertyNameValidator.cs
- DrawTreeNodeEventArgs.cs
- UiaCoreTypesApi.cs
- oledbmetadatacollectionnames.cs
- ObjectDataSourceFilteringEventArgs.cs
- BeginSelectCardRequest.cs
- ActionMessageFilterTable.cs
- ResourceDescriptionAttribute.cs
- RsaSecurityTokenAuthenticator.cs
- StateMachineExecutionState.cs
- ModelUIElement3D.cs
- DataListCommandEventArgs.cs
- PathFigureCollection.cs
- TransformProviderWrapper.cs
- KnownBoxes.cs
- StylusCaptureWithinProperty.cs
- StorageAssociationTypeMapping.cs
- SelectionRangeConverter.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- ArrayConverter.cs
- CapabilitiesState.cs
- Soap12ProtocolImporter.cs
- LongMinMaxAggregationOperator.cs
- User.cs
- XmlSerializerVersionAttribute.cs
- UIPropertyMetadata.cs
- documentsequencetextcontainer.cs
- ReadOnlyCollection.cs
- ButtonBaseDesigner.cs
- XmlSchemaSequence.cs
- TreeViewTemplateSelector.cs
- HostingEnvironmentWrapper.cs
- ConfigXmlCDataSection.cs
- SelectionRangeConverter.cs
- ItemsControlAutomationPeer.cs
- TemplateBuilder.cs
- IdentityValidationException.cs
- WindowsAltTab.cs