Как отключить преобразование автоматического списка AutoMapper между List <T>и EntitySet <T>? - PullRequest
4 голосов
/ 17 сентября 2009

Я сопоставляю свои сгенерированные сущности Linq-SQL с DTO, используя AutoMapper .

Когда я изначально создавал модульные тесты, у меня были настроены определенные карты (через класс статической конфигурации) для преобразования одного типа EntitySet в общий список (и наоборот)

Mapper.CreateMap<EntitySet<Member>, List<MemberDTO>>(); 
Mapper.CreateMap<List<MemberDTO>, EntitySet<Member>>(); 

После удаления списка преобразований (после выяснения, что AutoMapper преобразует их автоматически), мои модульные тесты все еще работали, но они замедлились до сканирования. Это было так заметно медленно, что для выполнения каждого теста потребовалась буквально минута.

После повторного добавления сопоставлений списков модульные тесты возобновили свою нормальную производительность.

Есть ли способ отключить это автоматическое преобразование для списков, чтобы я ДОЛЖЕН отображать свои преобразования списков? Я хотел бы, чтобы он генерировал исключение AutoMapperException, если мне не удалось включить карту. Я бы хотел избежать этих проблем с производительностью.

Если хуже становится хуже, я мог бы просто написать шаблон быстрой генерации кода для автоматического создания моего класса конфигурации отображения на основе DTO. Таким образом, я ничего не пропущу.

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

Любой вызов CreateMap не должен происходить более одного раза для одного AppDomain, который включает в себя как тесты, так и производственный код. У нас есть статический метод, двойная проверка заблокирована, чтобы гарантировать, что конфигурация происходит только один раз. Конфигурация кэшируется статически, поэтому нет необходимости делать это более одного раза.

Однако эти преобразования должны "просто работать", если у вас настроены карты Member -> MemberDTO и наоборот. Я проведу несколько тестов дыма для List <> -> EntitySet <>, чтобы убедиться, что он работает нормально.

0 голосов
/ 01 октября 2009

Оказывается, нельзя просто отключить автоконверсию. Я искал повсюду, и, кажется, нет никакого реального способа сделать это.

А пока я пишу все сопоставления вручную.

...