AutoMapper в DAL: когда использовать Mapper.Reset ()? - PullRequest
1 голос
/ 16 июня 2011

Я использую AutoMapper в сгенерированном слое доступа к данным. Это отлично работает. Было немного странно, когда AutoMapper использовался в другом слое, и все еще присутствовали отображения, созданные в DAL с Mapper.CreateMap<T1, T2>(). Я вижу Mapper.Reset(), который удалит их, но я бы не хотел, чтобы другие слои беспокоились о DAL. Будет ли наилучшей практикой ставить Mapper.Reset() до и после моих операций отображения в DAL? Или есть способ присвоения этим сопоставлениям DAL ключа не по умолчанию, чтобы они сохранялись, но не мешали использованию AutoMapper в других слоях?

Примечание. Использование AutoMapper в DAL имеет некоторые специфические параметры, такие как количество вызовов .ForMember (...), которые не должны использоваться моими другими слоями (без Mapper.Reset() они будут повторно использовать эти параметры).

1 Ответ

2 голосов
/ 01 августа 2011

AutoMapper работает как одиночный / одиночный экземпляр.Хотя действительно ли это важно?

РЕДАКТИРОВАТЬ: Это может помочь вам Использование профилей в Automapper для отображения тех же типов с другой логикой

Если другие ваши слои не беспокоятсяклассные возможности DAL таковы, что в любом случае они не будут вызывать Map для экземпляра класса DAL.

Если вы вызываете Reset (), тогда ваши DAL-классы должны будут повторно их преобразовать, когда они в следующий разнеобходимо выполнить некоторое сопоставление, которое добавит очень ненужные накладные расходы.

РЕДАКТИРОВАТЬ: если вы вызываете Reset в начале каждого вызова DAL, то вы можете иметь только однопотоковую стратегию доступа к данным.Если вы вызовете Reset в середине сопоставления для другого проекта DAL, то вы, очевидно, нарушите это - поэтому вам придется блокировать каждый метод DAL.

Это не способ использовать Automapper, поэтому ябудет склоняться либо к изучению этих профилей, либо к неиспользованию всего этого вместе.

ТАКЖЕ: Можете ли вы опубликовать пример кода о том, что не так с множеством сопоставлений?Существуют ли разные стратегии отображения между двумя типами в зависимости от того, откуда в DAL они вызываются?

...