Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Objects / DataClasses / ComplexObject.cs / 1 / ComplexObject.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data; using System.Diagnostics; using System.Reflection; using System.ComponentModel; using System.Runtime.Serialization; namespace System.Data.Objects.DataClasses { ////// This is the interface that represent the minimum interface required /// to be an entity in ADO.NET. /// [DataContract(IsReference = true)] [Serializable] public abstract class ComplexObject : StructuralObject { // The following fields are serialized. Adding or removing a serialized field is considered // a breaking change. This includes changing the field type or field name of existing // serialized fields. If you need to make this kind of change, it may be possible, but it // will require some custom serialization/deserialization code. private StructuralObject _parent; // Object that contains this ComplexObject (can be Entity or ComplexObject) private string _parentPropertyName; // Property name for this type on the containing object ////// Associate the ComplexType with an Entity or another ComplexObject /// Parent may be an Entity or ComplexObject /// /// Object to be added to. /// The property on the parent that reference the complex type. internal void AttachToParent( StructuralObject parent, string parentPropertyName) { Debug.Assert(null != parent, "Attempt to attach to a null parent"); Debug.Assert(null != parentPropertyName, "Must provide parentPropertyName in order to attach"); if (_parent != null) { throw EntityUtil.ComplexObjectAlreadyAttachedToParent(); } Debug.Assert(_parentPropertyName == null); _parent = parent; _parentPropertyName = parentPropertyName; } ////// Removes this instance from the parent it was attached to. /// Parent may be an Entity or ComplexObject /// internal void DetachFromParent() { // We will null out _parent and _parentPropertyName anyway, so if they are already null // it is an unexpected condition, but should not cause a failure in released code Debug.Assert(_parent != null, "Attempt to detach from a null _parent"); Debug.Assert(_parentPropertyName != null, "Null _parentPropertyName on a non-null _parent"); _parent = null; _parentPropertyName = null; } ////// Reports that a change is about to occur to one of the properties of this instance /// to the containing object and then continues default change /// reporting behavior. /// protected sealed override void ReportPropertyChanging( string property) { EntityUtil.CheckStringArgument(property, "property"); base.ReportPropertyChanging(property); // Since we are a ComplexObject, all changes (scalar or complex) are considered complex property changes ReportComplexPropertyChanging(null, this, property); } ////// Reports a change to one of the properties of this instance /// to the containing object and then continues default change /// reporting behavior. /// protected sealed override void ReportPropertyChanged( string property) { EntityUtil.CheckStringArgument(property, "property"); // Since we are a ComplexObject, all changes (scalar or complex) are considered complex property changes ReportComplexPropertyChanged(null, this, property); base.ReportPropertyChanged(property); } internal sealed override bool IsChangeTracked { get { return _parent == null ? false : _parent.IsChangeTracked; } } ////// This method is used to report all changes on this ComplexObject to its parent entity or ComplexObject /// /// /// Should be null in this method override. /// This is only relevant in Entity's implementation of this method, so it is unused here /// Instead of passing the most-derived property name up the hierarchy, we will always pass the current _parentPropertyName /// Once this gets up to the Entity, it will actually use the value that was passed in /// /// /// The instance of the object on which the property is changing. /// /// /// The name of the changing property on complexObject. /// internal sealed override void ReportComplexPropertyChanging( string entityMemberName, ComplexObject complexObject, string complexMemberName) { // entityMemberName is unused here because we just keep passing the current parent name up the hierarchy // This value is only used in the EntityObject override of this method Debug.Assert(complexObject != null, "invalid complexObject"); Debug.Assert(!String.IsNullOrEmpty(complexMemberName), "invalid complexMemberName"); if (null != _parent) { _parent.ReportComplexPropertyChanging(_parentPropertyName, complexObject, complexMemberName); } } ////// This method is used to report all changes on this ComplexObject to its parent entity or ComplexObject /// /// /// Should be null in this method override. /// This is only relevant in Entity's implementation of this method, so it is unused here /// Instead of passing the most-derived property name up the hierarchy, we will always pass the current _parentPropertyName /// Once this gets up to the Entity, it will actually use the value that was passed in. /// /// /// The instance of the object on which the property is changing. /// /// /// The name of the changing property on complexObject. /// internal sealed override void ReportComplexPropertyChanged( string entityMemberName, ComplexObject complexObject, string complexMemberName) { // entityMemberName is unused here because we just keep passing the current parent name up the hierarchy // This value is only used in the EntityObject override of this method Debug.Assert(complexObject != null, "invalid complexObject"); Debug.Assert(!String.IsNullOrEmpty(complexMemberName), "invalid complexMemberName"); if (null != _parent) { _parent.ReportComplexPropertyChanged(_parentPropertyName, complexObject, complexMemberName); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data; using System.Diagnostics; using System.Reflection; using System.ComponentModel; using System.Runtime.Serialization; namespace System.Data.Objects.DataClasses { ////// This is the interface that represent the minimum interface required /// to be an entity in ADO.NET. /// [DataContract(IsReference = true)] [Serializable] public abstract class ComplexObject : StructuralObject { // The following fields are serialized. Adding or removing a serialized field is considered // a breaking change. This includes changing the field type or field name of existing // serialized fields. If you need to make this kind of change, it may be possible, but it // will require some custom serialization/deserialization code. private StructuralObject _parent; // Object that contains this ComplexObject (can be Entity or ComplexObject) private string _parentPropertyName; // Property name for this type on the containing object ////// Associate the ComplexType with an Entity or another ComplexObject /// Parent may be an Entity or ComplexObject /// /// Object to be added to. /// The property on the parent that reference the complex type. internal void AttachToParent( StructuralObject parent, string parentPropertyName) { Debug.Assert(null != parent, "Attempt to attach to a null parent"); Debug.Assert(null != parentPropertyName, "Must provide parentPropertyName in order to attach"); if (_parent != null) { throw EntityUtil.ComplexObjectAlreadyAttachedToParent(); } Debug.Assert(_parentPropertyName == null); _parent = parent; _parentPropertyName = parentPropertyName; } ////// Removes this instance from the parent it was attached to. /// Parent may be an Entity or ComplexObject /// internal void DetachFromParent() { // We will null out _parent and _parentPropertyName anyway, so if they are already null // it is an unexpected condition, but should not cause a failure in released code Debug.Assert(_parent != null, "Attempt to detach from a null _parent"); Debug.Assert(_parentPropertyName != null, "Null _parentPropertyName on a non-null _parent"); _parent = null; _parentPropertyName = null; } ////// Reports that a change is about to occur to one of the properties of this instance /// to the containing object and then continues default change /// reporting behavior. /// protected sealed override void ReportPropertyChanging( string property) { EntityUtil.CheckStringArgument(property, "property"); base.ReportPropertyChanging(property); // Since we are a ComplexObject, all changes (scalar or complex) are considered complex property changes ReportComplexPropertyChanging(null, this, property); } ////// Reports a change to one of the properties of this instance /// to the containing object and then continues default change /// reporting behavior. /// protected sealed override void ReportPropertyChanged( string property) { EntityUtil.CheckStringArgument(property, "property"); // Since we are a ComplexObject, all changes (scalar or complex) are considered complex property changes ReportComplexPropertyChanged(null, this, property); base.ReportPropertyChanged(property); } internal sealed override bool IsChangeTracked { get { return _parent == null ? false : _parent.IsChangeTracked; } } ////// This method is used to report all changes on this ComplexObject to its parent entity or ComplexObject /// /// /// Should be null in this method override. /// This is only relevant in Entity's implementation of this method, so it is unused here /// Instead of passing the most-derived property name up the hierarchy, we will always pass the current _parentPropertyName /// Once this gets up to the Entity, it will actually use the value that was passed in /// /// /// The instance of the object on which the property is changing. /// /// /// The name of the changing property on complexObject. /// internal sealed override void ReportComplexPropertyChanging( string entityMemberName, ComplexObject complexObject, string complexMemberName) { // entityMemberName is unused here because we just keep passing the current parent name up the hierarchy // This value is only used in the EntityObject override of this method Debug.Assert(complexObject != null, "invalid complexObject"); Debug.Assert(!String.IsNullOrEmpty(complexMemberName), "invalid complexMemberName"); if (null != _parent) { _parent.ReportComplexPropertyChanging(_parentPropertyName, complexObject, complexMemberName); } } ////// This method is used to report all changes on this ComplexObject to its parent entity or ComplexObject /// /// /// Should be null in this method override. /// This is only relevant in Entity's implementation of this method, so it is unused here /// Instead of passing the most-derived property name up the hierarchy, we will always pass the current _parentPropertyName /// Once this gets up to the Entity, it will actually use the value that was passed in. /// /// /// The instance of the object on which the property is changing. /// /// /// The name of the changing property on complexObject. /// internal sealed override void ReportComplexPropertyChanged( string entityMemberName, ComplexObject complexObject, string complexMemberName) { // entityMemberName is unused here because we just keep passing the current parent name up the hierarchy // This value is only used in the EntityObject override of this method Debug.Assert(complexObject != null, "invalid complexObject"); Debug.Assert(!String.IsNullOrEmpty(complexMemberName), "invalid complexMemberName"); if (null != _parent) { _parent.ReportComplexPropertyChanged(_parentPropertyName, complexObject, complexMemberName); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Query.cs
- ClientProxyGenerator.cs
- DataGridViewAutoSizeModeEventArgs.cs
- _DomainName.cs
- PrintPreviewControl.cs
- DbProviderFactoriesConfigurationHandler.cs
- TextRange.cs
- PathFigure.cs
- ProtocolsConfigurationEntry.cs
- ProviderConnectionPoint.cs
- AbandonedMutexException.cs
- ModulesEntry.cs
- TcpHostedTransportConfiguration.cs
- CultureInfo.cs
- DependencyObjectPropertyDescriptor.cs
- SQLInt32Storage.cs
- newinstructionaction.cs
- ResourcesBuildProvider.cs
- GPPOINT.cs
- DigestTraceRecordHelper.cs
- ImageButton.cs
- RelatedPropertyManager.cs
- TagPrefixCollection.cs
- _TimerThread.cs
- BackStopAuthenticationModule.cs
- _emptywebproxy.cs
- Array.cs
- CustomValidator.cs
- XmlAttribute.cs
- NonParentingControl.cs
- RegisteredArrayDeclaration.cs
- SiteMapNodeCollection.cs
- DecimalMinMaxAggregationOperator.cs
- FileLogRecordHeader.cs
- ProcessHostServerConfig.cs
- BeginEvent.cs
- ClientProxyGenerator.cs
- ObjectStateEntry.cs
- ProviderException.cs
- TabControl.cs
- DataGridPagingPage.cs
- EraserBehavior.cs
- ParseElement.cs
- CLSCompliantAttribute.cs
- HttpProxyCredentialType.cs
- TextTreeInsertUndoUnit.cs
- NavigationService.cs
- CharacterMetricsDictionary.cs
- Inflater.cs
- PointAnimationUsingPath.cs
- WindowsAuthenticationEventArgs.cs
- EarlyBoundInfo.cs
- SerializationInfo.cs
- Control.cs
- WinInet.cs
- XmlSchemaInclude.cs
- AutoGeneratedField.cs
- X509ChainPolicy.cs
- Util.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- DependsOnAttribute.cs
- smtpconnection.cs
- DockPattern.cs
- StringConverter.cs
- CheckBoxList.cs
- UnaryExpression.cs
- ParallelTimeline.cs
- WindowExtensionMethods.cs
- CompilerError.cs
- WorkflowOperationAsyncResult.cs
- Encoding.cs
- ServiceBuildProvider.cs
- Blend.cs
- CqlParser.cs
- TreeViewEvent.cs
- TrailingSpaceComparer.cs
- PropertyRecord.cs
- CompositeActivityTypeDescriptorProvider.cs
- CodeTypeDeclaration.cs
- Crypto.cs
- ListBoxAutomationPeer.cs
- SafeThemeHandle.cs
- __TransparentProxy.cs
- ToolStripItemClickedEventArgs.cs
- TransformFinalBlockRequest.cs
- DocumentAutomationPeer.cs
- ToolStripItemCollection.cs
- PieceDirectory.cs
- DataControlFieldCell.cs
- SimpleFileLog.cs
- SqlCacheDependency.cs
- RsaSecurityToken.cs
- SqlMethodAttribute.cs
- NamespaceListProperty.cs
- MessageHeaderT.cs
- Color.cs
- TabControl.cs
- DesignerWidgets.cs
- ScrollContentPresenter.cs
- SystemPens.cs