Exemplo n.º 1
0
        /// <summary>
        /// Sets the destination <see cref="DatabaseParameters"/> from the source property value.
        /// </summary>
        /// <param name="value">The source value.</param>
        /// <param name="parameters">The <see cref="DatabaseParameters"/>.</param>
        /// <param name="operationType">The single <see cref="Mapper.OperationTypes"/> being performed to enable selection.</param>
        public void SetDestValue(TSrce value, DatabaseParameters parameters, OperationTypes operationType)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            if (!OperationTypes.HasFlag(operationType))
            {
                return;
            }

            if (parameters.Contains(DestParameterName))
            {
                return;
            }

            if (_mapToDbOverride != null)
            {
                _mapToDbOverride(value, parameters, operationType);
                return;
            }

            var val = GetSrceValue(value, operationType);

            if (Mapper != null)
            {
                var em = (IDatabaseMapper)Mapper;
                em.MapToDb(val, parameters, operationType, this);
            }
            else
            {
                if (DestDbType.HasValue)
                {
                    parameters.AddParameter(DestParameterName, Converter == null ? val : Converter.ConvertToDest(val), dbType: DestDbType.Value);
                }
                else
                {
                    parameters.AddParameter(DestParameterName, Converter == null ? val : Converter.ConvertToDest(val));
                }
            }
        }