/// <summary>
        /// Извлекает значение свойства указанного объекта через рефлексию.
        /// </summary>
        /// <param name="target">Объект, содержащий указанное свойство.</param>
        /// <param name="propName">Свойство, значение которого требуется извлечь.</param>
        /// <param name="targetType">Тип <see cref="target"/> (Данный параметр рекомендуется использовать,
        /// если <see cref="target"/> является прокси-объектом).</param>
        /// <returns>Извлечённое значение свойства.</returns>
        public object RetrievePropValue(object target, string propName, Type targetType = null)
        {
            Type            tType   = targetType ?? target.GetType();
            PersistentClass mapping = _configuration.GetClassMapping(tType);

            return(mapping.IdentifierProperty.Name == propName
                       ? mapping.IdentifierProperty.GetGetter(tType).Get(target)
                       : mapping.GetProperty(propName).GetGetter(tType).Get(target));
        }
        public static Action <SpatialAuxiliaryDatabaseObject> GetSridMapperFor <TEntity>(this Configuration cfg, string propertyName, int srid)
        {
            PersistentClass targetClass = cfg.GetClassMapping(typeof(TEntity));
            var             prop        = targetClass.GetProperty(propertyName);
            var             column      = (Column)prop.ColumnIterator.First();

            if (((CustomType)column.Value.Type).UserType is IGeometryUserType)
            {
                return(x => x.SetSRID(targetClass.Table, column, srid));
            }
            return(x => { });
        }