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
- Track.cs
- XmlArrayItemAttributes.cs
- VoiceObjectToken.cs
- BulletChrome.cs
- SafeCryptoHandles.cs
- WebBrowserContainer.cs
- CommandDevice.cs
- DataMemberFieldEditor.cs
- HostProtectionPermission.cs
- TypeConverters.cs
- Base64Encoder.cs
- FactoryMaker.cs
- CreateUserWizardStep.cs
- HttpDebugHandler.cs
- ServiceDescription.cs
- ServiceSettingsResponseInfo.cs
- BulletedListEventArgs.cs
- validationstate.cs
- KeyMatchBuilder.cs
- SoapReflectionImporter.cs
- AnnotationService.cs
- SectionXmlInfo.cs
- String.cs
- ObjectDataSourceStatusEventArgs.cs
- MethodAccessException.cs
- ConfigurationStrings.cs
- ContractMapping.cs
- CodeFieldReferenceExpression.cs
- NativeMethods.cs
- BaseCodePageEncoding.cs
- ObjectView.cs
- MDIControlStrip.cs
- DataSourceControl.cs
- ToolStripArrowRenderEventArgs.cs
- WebConfigurationHost.cs
- Binding.cs
- Attributes.cs
- ContextMenuAutomationPeer.cs
- FilterElement.cs
- ListControl.cs
- AccessDataSource.cs
- TextBox.cs
- UpdatePanelTriggerCollection.cs
- GridViewDeleteEventArgs.cs
- DispatcherEventArgs.cs
- XhtmlConformanceSection.cs
- GridLengthConverter.cs
- ConstructorBuilder.cs
- RawAppCommandInputReport.cs
- XmlResolver.cs
- DataGridViewRowsRemovedEventArgs.cs
- NetPeerTcpBindingElement.cs
- VectorAnimationUsingKeyFrames.cs
- ToolStripPanelDesigner.cs
- Double.cs
- DataFieldConverter.cs
- DeferrableContentConverter.cs
- KeyPullup.cs
- FastEncoder.cs
- IApplicationTrustManager.cs
- CorrelationQueryBehavior.cs
- CodeGotoStatement.cs
- HtmlLink.cs
- AnnotationResource.cs
- Cursors.cs
- Console.cs
- ListComponentEditorPage.cs
- Int32Converter.cs
- ParameterEditorUserControl.cs
- LateBoundBitmapDecoder.cs
- InputScope.cs
- ScrollPattern.cs
- FormsAuthenticationCredentials.cs
- DeferredElementTreeState.cs
- Stylus.cs
- WinCategoryAttribute.cs
- HMACRIPEMD160.cs
- ApplicationContext.cs
- TabRenderer.cs
- CodeTypeMemberCollection.cs
- GAC.cs
- WhiteSpaceTrimStringConverter.cs
- AnimationException.cs
- Model3DGroup.cs
- FeatureSupport.cs
- RtfControlWordInfo.cs
- XmlSerializerVersionAttribute.cs
- AuthorizationSection.cs
- XmlReaderSettings.cs
- RuleSetBrowserDialog.cs
- AutomationFocusChangedEventArgs.cs
- FactoryGenerator.cs
- _ChunkParse.cs
- TransformationRules.cs
- RemotingSurrogateSelector.cs
- GenerateScriptTypeAttribute.cs
- XmlNodeList.cs
- BindingGraph.cs
- EnumerableRowCollectionExtensions.cs
- ClientData.cs