/// <summary>Convert from AddressLink DTO to entity</summary>
        /// <param name="dbContext">DB Context to use for attaching entity</param>
        /// <param name="dto">DTO to convert from</param>
        /// <param name="dtoEntities">Used internally to track which dtos have been converted to entites already (to avoid re-converting when circularly referenced)</param>
        /// <returns>Resultant AddressLink entity</returns>
        public static AddressLink FromDto(FACTS.Framework.DAL.DbContext dbContext, AddressLinkDto dto, Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity> dtoEntities = null)
        {
            dtoEntities = dtoEntities ?? new Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity>();
            if (dtoEntities.ContainsKey(dto))
            {
                return((AddressLink)dtoEntities[dto]);
            }

            AddressLink entity = new AddressLink();

            dtoEntities.Add(dto, entity);
            FromDtoSet(dbContext, dto, entity, dtoEntities);

            if (dbContext != null)
            {
                dbContext.Entry(entity).State = (dto.IsNew ? EntityState.Added : (dto.IsDeleted ? EntityState.Deleted : EntityState.Modified));
            }

            return(entity);
        }
        /// <summary>Convert from AddressLink DTO to entity</summary>
        /// <param name="dbContext">DB Context to use for attaching entity</param>
        /// <param name="dto">DTO to convert from</param>
        /// <param name="dtoEntities">Used internally to track which dtos have been converted to entites already (to avoid re-converting when circularly referenced)</param>
        /// <returns>Resultant AddressLink entity</returns>
        public static AddressLink FromDto(FACTS.Framework.DAL.DbContext dbContext, AddressLinkDto dto, Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity> dtoEntities = null)
        {
            dtoEntities = dtoEntities ?? new Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity>();
            if (dtoEntities.ContainsKey(dto))
            {
                return((AddressLink)dtoEntities[dto]);
            }

            AddressLink entity = new AddressLink();

            dtoEntities.Add(dto, entity);

            entity.AddressId         = dto.AddressId;
            entity.AddressLinkId     = dto.AddressLinkId;
            entity.AddressTypeCode   = dto.AddressTypeCode;
            entity.AgentId           = dto.AgentId;
            entity.CreateDateTime    = dto.CreateDateTime;
            entity.CreateUserId      = dto.CreateUserId;
            entity.EmployerId        = dto.EmployerId;
            entity.EmployerUnitSeqNo = dto.EmployerUnitSeqNo;
            entity.StatusCode        = dto.StatusCode;
            entity.UpdateDateTime    = dto.UpdateDateTime;
            entity.UpdateNumber      = dto.UpdateNumber;
            entity.UpdateProcess     = dto.UpdateProcess;
            entity.UpdateUserId      = dto.UpdateUserId;

            entity.Address      = (dto.Address == null) ? null : Address.FromDto(dbContext, dto.Address, dtoEntities);
            entity.Employer     = (dto.Employer == null) ? null : Employer.FromDto(dbContext, dto.Employer, dtoEntities);
            entity.EmployerUnit = (dto.EmployerUnit == null) ? null : EmployerUnit.FromDto(dbContext, dto.EmployerUnit, dtoEntities);

            if (dbContext != null)
            {
                dbContext.Entry(entity).State = (dto.IsNew ? EntityState.Added : (dto.IsDeleted ? EntityState.Deleted : EntityState.Modified));
            }

            return(entity);
        }
        protected static void FromDtoSet(FACTS.Framework.DAL.DbContext dbContext, AddressLinkDto dto, AddressLink entity, Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity> dtoEntities)
        {
            entity.AddressId         = dto.AddressId;
            entity.AddressLinkId     = dto.AddressLinkId;
            entity.AddressTypeCode   = dto.AddressTypeCode;
            entity.AgentId           = dto.AgentId;
            entity.CreateDateTime    = dto.CreateDateTime;
            entity.CreateUserId      = dto.CreateUserId;
            entity.EmployerId        = dto.EmployerId;
            entity.EmployerUnitSeqNo = dto.EmployerUnitSeqNo;
            entity.StatusCode        = dto.StatusCode;
            entity.UpdateDateTime    = dto.UpdateDateTime;
            entity.UpdateNumber      = dto.UpdateNumber;
            entity.UpdateProcess     = dto.UpdateProcess;
            entity.UpdateUserId      = dto.UpdateUserId;

            entity.Address      = (dto.Address == null) ? null : Address.FromDto(dbContext, dto.Address, dtoEntities);
            entity.Employer     = (dto.Employer == null) ? null : Employer.FromDto(dbContext, dto.Employer, dtoEntities);
            entity.EmployerUnit = (dto.EmployerUnit == null) ? null : EmployerUnit.FromDto(dbContext, dto.EmployerUnit, dtoEntities);
        }