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

            var sourceSupport = source as IStaffStudentSchoolAssociationSynchronizationSourceSupport;

            // 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.SchoolName != target.SchoolName)
            {
                source.SchoolName = target.SchoolName;
            }
            if (source.StudentFirstName != target.StudentFirstName)
            {
                source.StudentFirstName = target.StudentFirstName;
            }
            if (source.StudentLastSurname != target.StudentLastSurname)
            {
                source.StudentLastSurname = target.StudentLastSurname;
            }

            // Copy non-PK properties


            // Sync lists

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

            // Copy contextual primary key values
            target.SchoolName         = source.SchoolName;
            target.StudentFirstName   = source.StudentFirstName;
            target.StudentLastSurname = source.StudentLastSurname;

            // Copy non-PK properties

            // Copy Aggregate Reference Data
            if (GeneratedArtifactStaticDependencies.AuthorizationContextProvider == null ||
                GeneratedArtifactStaticDependencies.AuthorizationContextProvider.GetAction() == RequestActions.ReadActionUri)
            {
                target.StudentSchoolAssociationResourceId    = source.StudentSchoolAssociationResourceId;
                target.StudentSchoolAssociationDiscriminator = source.StudentSchoolAssociationDiscriminator;
            }



            // ----------------------------------
            //   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);
            }
        }