Ответы пользователя по тегу .NET
  • Automapper. Как заставить его игнорировать свойства в Destination для которых нету соответствия в Source?

    supra7sky
    @supra7sky Автор вопроса
    Решение:
    using System.Linq;
    using System.Reflection;
    using AutoMapper;
    
    namespace AgilityTracker.BLL.Extension
    {
        public static class MappingExpressionExtension
        {
            /// <summary>
            /// Игнорирует свойства в Destination для которых нет соотвествия в Source
            /// </summary>
            public static IMappingExpression<TSource, TDest> IgnoreAllUnmapped<TSource, TDest>(this IMappingExpression<TSource, TDest> expression)
            {
                var destinationProperties = typeof(TDest).GetProperties().Select<PropertyInfo, string>(s => s.Name);
                var sourceProperties = typeof(TSource).GetProperties().Select<PropertyInfo, string>(s => s.Name);
                var difference = destinationProperties.Except(sourceProperties);
                difference.Each(item => expression.ForMember(item, o => o.Ignore()));
                return expression;
            }
        }
    }

    Использование:
    using AgilityTracker.BLL.Extension;
    ...
    Mapper.CreateMap<Story, DAL.Story>()
                    .IgnoreAllUnmapped();

    Стандартного метода, как я понял, в AutoMapper нету?
    Ответ написан
    Комментировать