EntityWithChangeTrackerStrategy.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / 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.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK