File: System\Data\Objects\DataClasses\IEntityChangeTracker.cs
Project: ndp\fx\src\DataEntity\System.Data.Entity.csproj (System.Data.Entity)
//---------------------------------------------------------------------
// <copyright file="IEntityChangeTracker.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// @owner       sparra
// @backupOwner barryfr
//---------------------------------------------------------------------
using System.Data.Objects;
using System.Reflection;
 
namespace System.Data.Objects.DataClasses
{
    /// <summary>
    /// This interface is implemented by a change tracker and is used by data classes to report changes
    /// </summary>
    public interface IEntityChangeTracker
    {
        /// <summary>
        /// Used to report that a scalar entity property is about to change        
        /// </summary>
        /// <param name="entityMemberName">The name of the entity property that is changing</param>
        void EntityMemberChanging(string entityMemberName);
 
        /// <summary>
        /// Used to report that a scalar entity property has been changed        
        /// </summary>
        /// <param name="entityMemberName">The name of the entity property that has changed</param>
        void EntityMemberChanged(string entityMemberName);
 
        /// <summary>
        /// Used to report that a complex property is about to change        
        /// </summary>
        /// <param name="entityMemberName">The name of the top-level entity property that is changing</param>
        /// <param name="complexObject">The complex object that contains the property that is changing</param>
        /// <param name="complexObjectMemberName">The name of the property that is changing on complexObject</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "object")]
        void EntityComplexMemberChanging(string entityMemberName, object complexObject, string complexObjectMemberName);
        
        /// <summary>
        /// Used to report that a complex property has been changed        
        /// </summary>
        /// <param name="entityMemberName">The name of the top-level entity property that has changed</param>
        /// <param name="complexObject">The complex object that contains the property that changed</param>
        /// <param name="complexObjectMemberName">The name of the property that changed on complexObject</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "object")]
        void EntityComplexMemberChanged(string entityMemberName, object complexObject, string complexObjectMemberName);
 
        /// <summary>
        /// Returns the EntityState from the change tracker, or EntityState.Detached if this
        /// entity is not being managed by a change tracker
        /// </summary>
        EntityState EntityState { get;  }
    }
}