Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / Internal / EntityWithChangeTrackerStrategy.cs / 1305376 / EntityWithChangeTrackerStrategy.cs
using System; using System.Collections.Generic; using System.Text; using System.Data.Objects.DataClasses; using System.Diagnostics; namespace System.Data.Objects.Internal { ////// Implementation of the change tracking strategy for entities that support change trackers. /// These are typically entities that implement IEntityWithChangeTracker. /// internal sealed class EntityWithChangeTrackerStrategy : IChangeTrackingStrategy { private IEntityWithChangeTracker _entity; ////// Constructs a strategy object that will cause the change tracker to be set onto the /// given object. /// /// The object onto which a change tracker will be set public EntityWithChangeTrackerStrategy(IEntityWithChangeTracker entity) { _entity = entity; } // See IChangeTrackingStrategy documentation public void SetChangeTracker(IEntityChangeTracker changeTracker) { _entity.SetChangeTracker(changeTracker); } // See IChangeTrackingStrategy documentation public void TakeSnapshot(EntityEntry entry) { if (entry != null && entry.WrappedEntity.RequiresComplexChangeTracking) { entry.TakeSnapshot(true); } } // See IChangeTrackingStrategy documentation public void SetCurrentValue(EntityEntry entry, StateManagerMemberMetadata member, int ordinal, object target, object value) { member.SetValue(target, value); } // See IChangeTrackingStrategy documentation public void UpdateCurrentValueRecord(object value, EntityEntry entry) { // Has change tracker, but may or may not be a proxy bool isProxy = entry.WrappedEntity.IdentityType != _entity.GetType(); entry.UpdateRecordWithoutSetModified(value, entry.CurrentValues); if (isProxy) { entry.DetectChangesInProperties(true); // detect only complex property changes } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; using System.Data.Objects.DataClasses; using System.Diagnostics; namespace System.Data.Objects.Internal { ////// Implementation of the change tracking strategy for entities that support change trackers. /// These are typically entities that implement IEntityWithChangeTracker. /// internal sealed class EntityWithChangeTrackerStrategy : IChangeTrackingStrategy { private IEntityWithChangeTracker _entity; ////// Constructs a strategy object that will cause the change tracker to be set onto the /// given object. /// /// The object onto which a change tracker will be set public EntityWithChangeTrackerStrategy(IEntityWithChangeTracker entity) { _entity = entity; } // See IChangeTrackingStrategy documentation public void SetChangeTracker(IEntityChangeTracker changeTracker) { _entity.SetChangeTracker(changeTracker); } // See IChangeTrackingStrategy documentation public void TakeSnapshot(EntityEntry entry) { if (entry != null && entry.WrappedEntity.RequiresComplexChangeTracking) { entry.TakeSnapshot(true); } } // See IChangeTrackingStrategy documentation public void SetCurrentValue(EntityEntry entry, StateManagerMemberMetadata member, int ordinal, object target, object value) { member.SetValue(target, value); } // See IChangeTrackingStrategy documentation public void UpdateCurrentValueRecord(object value, EntityEntry entry) { // Has change tracker, but may or may not be a proxy bool isProxy = entry.WrappedEntity.IdentityType != _entity.GetType(); entry.UpdateRecordWithoutSetModified(value, entry.CurrentValues); if (isProxy) { entry.DetectChangesInProperties(true); // detect only complex property changes } } } } // 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
- CTreeGenerator.cs
- SatelliteContractVersionAttribute.cs
- PackageRelationshipCollection.cs
- XamlPathDataSerializer.cs
- MetadataLocation.cs
- Size.cs
- Operator.cs
- AnnotationComponentChooser.cs
- ObjectManager.cs
- HtmlTable.cs
- TimelineGroup.cs
- ServiceNameElement.cs
- AxDesigner.cs
- RelatedImageListAttribute.cs
- Preprocessor.cs
- RuleInfoComparer.cs
- InputBindingCollection.cs
- CreateParams.cs
- SecurityTokenValidationException.cs
- SelfIssuedAuthProofToken.cs
- Substitution.cs
- WmlFormAdapter.cs
- CheckBoxList.cs
- InteropExecutor.cs
- TriggerActionCollection.cs
- DSACryptoServiceProvider.cs
- AnimationClockResource.cs
- TextFormatterContext.cs
- AbsoluteQuery.cs
- ProtocolsInstallComponent.cs
- SqlCommand.cs
- SQLBinary.cs
- ADConnectionHelper.cs
- VirtualizingPanel.cs
- RewritingPass.cs
- Delegate.cs
- DesignerRegionCollection.cs
- CanonicalXml.cs
- QilInvokeEarlyBound.cs
- DataGridTemplateColumn.cs
- AgileSafeNativeMemoryHandle.cs
- MappingModelBuildProvider.cs
- ADMembershipUser.cs
- UnaryOperationBinder.cs
- FileChangesMonitor.cs
- LayoutSettings.cs
- TargetControlTypeCache.cs
- StaticResourceExtension.cs
- DocumentViewerConstants.cs
- RawStylusInputCustomData.cs
- ProtocolsConfigurationHandler.cs
- CultureTableRecord.cs
- WebPartConnectionsCancelVerb.cs
- SiteOfOriginContainer.cs
- PeerEndPoint.cs
- InfoCardCryptoHelper.cs
- FileLoadException.cs
- UriSectionReader.cs
- SqlExpander.cs
- Int64AnimationBase.cs
- XmlObjectSerializer.cs
- VectorAnimation.cs
- ParameterModifier.cs
- GradientStop.cs
- UniqueIdentifierService.cs
- LayoutSettings.cs
- ThreadStateException.cs
- Code.cs
- StorageEntityContainerMapping.cs
- ConvertBinder.cs
- HttpRuntime.cs
- JsonFormatReaderGenerator.cs
- _RegBlobWebProxyDataBuilder.cs
- RefType.cs
- HelpKeywordAttribute.cs
- TrackingMemoryStream.cs
- WebPartAuthorizationEventArgs.cs
- DATA_BLOB.cs
- Decoder.cs
- ExpressionParser.cs
- TrimSurroundingWhitespaceAttribute.cs
- XmlHelper.cs
- TemplatedWizardStep.cs
- XPathDocument.cs
- ServiceRoute.cs
- MetadataPropertyCollection.cs
- DesignerToolboxInfo.cs
- XpsImageSerializationService.cs
- Parser.cs
- MailDefinition.cs
- Point3DCollection.cs
- FrameworkRichTextComposition.cs
- BindingContext.cs
- ToolStripRenderEventArgs.cs
- RouteValueExpressionBuilder.cs
- TransactionFormatter.cs
- ZipFileInfoCollection.cs
- ResourceContainer.cs
- ZoomPercentageConverter.cs
- WebControlsSection.cs