public static bool SynchronizeTo(this IParentAddress source, IParentAddress target)
        {
            bool isModified = false;

            var sourceSupport = source as IParentAddressSynchronizationSourceSupport;

            // Back synch non-reference portion of PK (PK properties cannot be changed, therefore they can be omitted in the resource payload, but we need them for proper comparisons for persistence)
            if (source.City != target.City)
            {
                source.City = target.City;
            }

            // Copy non-PK properties


            // Sync lists

            return(isModified);
        }
        public static void MapTo(this IParentAddress source, IParentAddress target, Action <IParentAddress, IParentAddress> onMapped)
        {
            var sourceSynchSupport = source as IParentAddressSynchronizationSourceSupport;
            var targetSynchSupport = target as IParentAddressSynchronizationSourceSupport;

            // Copy contextual primary key values
            target.City = source.City;

            // Copy non-PK properties

            // Copy Aggregate Reference Data


            // ----------------------------------
            //   Map One-to-one relationships
            // ----------------------------------

            // Map lists


            var eTagProvider = new ETagProvider();

            // Convert value to ETag, if appropriate
            var entityWithETag = target as IHasETag;

            if (entityWithETag != null)
            {
                entityWithETag.ETag = eTagProvider.GetETag(source);
            }

            // Convert value to LastModifiedDate, if appropriate
            var dateVersionedEntity = target as IDateVersionedEntity;
            var etagSource          = source as IHasETag;

            if (dateVersionedEntity != null && etagSource != null)
            {
                dateVersionedEntity.LastModifiedDate = eTagProvider.GetDateTime(etagSource.ETag);
            }
        }