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
- GPPOINT.cs
- TransactionScopeDesigner.cs
- Point4D.cs
- StringFunctions.cs
- DataRelationCollection.cs
- PublisherIdentityPermission.cs
- Point4D.cs
- ThreadStartException.cs
- PingReply.cs
- RuleSettingsCollection.cs
- EnumConverter.cs
- WmfPlaceableFileHeader.cs
- FragmentQuery.cs
- HTMLTagNameToTypeMapper.cs
- Pens.cs
- LinearGradientBrush.cs
- OdbcConnectionFactory.cs
- TcpConnectionPoolSettingsElement.cs
- ContainerVisual.cs
- PeerValidationBehavior.cs
- PropertyIDSet.cs
- WebPartManagerDesigner.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- Viewport3DAutomationPeer.cs
- Label.cs
- AutoResizedEvent.cs
- GiveFeedbackEvent.cs
- HtmlHead.cs
- OrderedEnumerableRowCollection.cs
- Rotation3DAnimation.cs
- ChainOfResponsibility.cs
- CacheSection.cs
- DataGridViewUtilities.cs
- TransactionManager.cs
- Point3DAnimationUsingKeyFrames.cs
- ThreadInterruptedException.cs
- ParallelRangeManager.cs
- DataTableReader.cs
- HandleCollector.cs
- EpmContentSerializer.cs
- TabControl.cs
- SpeakProgressEventArgs.cs
- XmlSchemaAttributeGroup.cs
- ExcludeFromCodeCoverageAttribute.cs
- SqlUtils.cs
- ConfigurationStrings.cs
- MimeTypeAttribute.cs
- UserPersonalizationStateInfo.cs
- RtfControlWordInfo.cs
- DetailsView.cs
- HtmlDocument.cs
- XamlTemplateSerializer.cs
- ConcurrentBag.cs
- OleDbCommand.cs
- RawTextInputReport.cs
- PackWebResponse.cs
- XhtmlBasicValidationSummaryAdapter.cs
- SoapException.cs
- TypeDescriptor.cs
- QilFunction.cs
- NetworkAddressChange.cs
- HttpModuleActionCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- ErrorProvider.cs
- Tuple.cs
- IResourceProvider.cs
- DelimitedListTraceListener.cs
- ProcessHost.cs
- XmlNodeComparer.cs
- GridSplitter.cs
- ComponentEditorForm.cs
- MimeObjectFactory.cs
- RemoteDebugger.cs
- TextSelectionHighlightLayer.cs
- TileBrush.cs
- HttpCacheVary.cs
- BuildResult.cs
- ReadOnlyHierarchicalDataSourceView.cs
- MapPathBasedVirtualPathProvider.cs
- FormsAuthenticationEventArgs.cs
- ExpressionVisitor.cs
- SqlNode.cs
- TransformConverter.cs
- Header.cs
- CompatibleComparer.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- ComplexTypeEmitter.cs
- ContextItem.cs
- ConsumerConnectionPoint.cs
- WindowCollection.cs
- MobileListItem.cs
- SessionSwitchEventArgs.cs
- ViewGenerator.cs
- AuthenticatedStream.cs
- glyphs.cs
- RightsManagementEncryptionTransform.cs
- SkipStoryboardToFill.cs
- SrgsDocument.cs
- TabletDevice.cs
- ReverseInheritProperty.cs