AutoMapper игнорирует свойства - PullRequest
0 голосов
/ 12 октября 2010

когда я использую это отображение

           Mapper.CreateMap<DataSourceConfigurationContract, DataSourceConfigurationContract>().ForMember(x => (object)x.DatabaseTypeException, opt => opt.Ignore())
                                                                                               .ForMember(x => (object)x.DatabaseType, opt => opt.Ignore());

           var mappedValue = Mapper.Map<DataSourceConfigurationContract, DataSourceConfigurationContract>(dataSourceConfiguration);

для этого класса

public sealed class DataSourceConfigurationContract {
  public string Name { get; set; }
  public string ConnectionString { get; set; }
  public string ConnectionType  { get; set; }
  public DataSourcePropertyContractCollection Properties { get; set; }
  public DataSourceAreaConfigurationContractCollection Areas { get; set; }
  public UserContractCollection AllowedUsers{ get; set; }
  public DataSourceType? DatabaseType { get; set; }
  public ExceptionContract DatabaseTypeException { get; set; }
  public DataSourceType DataSourceType { get; set; } }

некоторые свойства игнорируются (например, области), которые должны отображаться.Свойства строки, кажется, всегда правильно отображаются.Что я сделал не так?

Ответы [ 3 ]

0 голосов
/ 12 октября 2010

Для ваших коллекций вам нужно сделать что-то похожее на следующее (взято из кода, над которым я недавно работал):

Mapper.CreateMap<List<QuizItemTypeModel>, List<Quiz.DataContracts.QuizItemType>>()
                .Include<QuizDataCompositeModel, Quiz.DataContracts.QuizDataComposite>();

Где QuizDataCompositeModel и Quiz.DataContracts.QuizDataComposite оба расширяются List<"RespectiveType">

0 голосов
/ 22 октября 2010

Все довольно просто:

Mapper.CreateMap<DataSourceAreaConfigurationContract, DataSourceAreaConfiguration>();
Mapper.CreateMap<DataSourceConfigurationContract, DataSourceConfigurationContract>()
      .ForMember(dest => dest.Areas, opt => opt.UseDestinationValue());

Типп: скачайте исходный код и учитесь на данных юнит-тестах и ​​примерах! Вы можете получить его там: http://automapper.codeplex.com/SourceControl/list/changesets

0 голосов
/ 12 октября 2010

AutoMapper поддерживает только следующие коллекции из коробки: http://automapper.codeplex.com/wikipage?title=Lists%20and%20Arrays&referringTitle=Home.Я предполагаю, что ваши свойства, которые не копируются, имеют тип XXXCollection.

Вы можете решить эту проблему, создав специальный конвертер типов для типов вашей коллекции: http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters&referringTitle=Home

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...