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
- AdPostCacheSubstitution.cs
- DependencyPropertyKind.cs
- Button.cs
- InvalidComObjectException.cs
- FixedSOMLineCollection.cs
- PathGeometry.cs
- TemplateControlBuildProvider.cs
- AspNetSynchronizationContext.cs
- localization.cs
- WindowsPen.cs
- DataGridViewColumn.cs
- TableLayoutColumnStyleCollection.cs
- DetailsViewDeletedEventArgs.cs
- ServiceModelEnumValidator.cs
- UnionExpr.cs
- SessionPageStatePersister.cs
- HashSetDebugView.cs
- TextParaClient.cs
- CodeVariableReferenceExpression.cs
- IdentityModelDictionary.cs
- DataGridHeaderBorder.cs
- ToolTip.cs
- DataBindEngine.cs
- Typeface.cs
- HashHelpers.cs
- ClientScriptManagerWrapper.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- CodeSnippetExpression.cs
- DataGridColumnDropSeparator.cs
- RoleManagerModule.cs
- PrintController.cs
- DataObjectAttribute.cs
- QueuePathDialog.cs
- GlobalProxySelection.cs
- PointCollectionValueSerializer.cs
- NewArrayExpression.cs
- SubMenuStyle.cs
- CodeAttributeDeclarationCollection.cs
- RadioButtonAutomationPeer.cs
- WindowsListViewSubItem.cs
- MultiSelector.cs
- EntityDataSourceContextCreatingEventArgs.cs
- FontFamilyValueSerializer.cs
- WindowsGrip.cs
- DirectoryObjectSecurity.cs
- ImageKeyConverter.cs
- SqlBuffer.cs
- CalendarDay.cs
- ConfigurationPropertyCollection.cs
- DataView.cs
- WebPartsPersonalizationAuthorization.cs
- XPathNodeIterator.cs
- FocusTracker.cs
- WebPartExportVerb.cs
- DataTableMapping.cs
- PropertyKey.cs
- SqlNode.cs
- MultiBindingExpression.cs
- XmlDomTextWriter.cs
- XmlSchemaGroup.cs
- QilPatternVisitor.cs
- ViewBox.cs
- ListCollectionView.cs
- NextPreviousPagerField.cs
- ModelChangedEventArgsImpl.cs
- ReadOnlyDictionary.cs
- COM2ExtendedUITypeEditor.cs
- Padding.cs
- Scene3D.cs
- SelectionWordBreaker.cs
- SqlBulkCopy.cs
- XamlPathDataSerializer.cs
- SharedStatics.cs
- Char.cs
- SettingsProperty.cs
- SchemaNotation.cs
- WaveHeader.cs
- XmlMapping.cs
- DeclarativeCatalogPartDesigner.cs
- WindowsListView.cs
- WinFormsComponentEditor.cs
- State.cs
- SelectionChangedEventArgs.cs
- CompositeActivityMarkupSerializer.cs
- CommandConverter.cs
- XmlEncodedRawTextWriter.cs
- SecurityElementBase.cs
- WebPartAuthorizationEventArgs.cs
- ReadOnlyHierarchicalDataSourceView.cs
- PackageRelationshipSelector.cs
- HotSpotCollection.cs
- MemberInitExpression.cs
- SqlCommand.cs
- NativeMethods.cs
- ChannelSinkStacks.cs
- XmlCDATASection.cs
- RoleGroup.cs
- SQLBytes.cs
- LexicalChunk.cs
- ClusterSafeNativeMethods.cs