У меня есть приложение N-Layer, как показано ниже
MyApp.Model - содержит edmx и модели данных
MyApp.DataAccess -Репозитории с EF
MyApp.Domain - Доменные / бизнес-модели
MyApp.Services - услуги (библиотека классов)
MyApp.Api - веб-API ASP.NET
Я использую Unity в качестве контейнера IoC и Automapper для отображения OO.
Мой уровень DataAccessссылается на слой модели, который содержит все мои объекты данных.
Я не хочу ссылаться на мой модельный проект в моем слое API.Таким образом, возвращая DomainObjects (бизнес-модели) из сервисного уровня и сопоставляя их с DTO на уровне API (DTO на уровне API).
Я настроил сопоставление domainModel с DTO на уровне API, как показано ниже
public static class MapperConfig
{
public static void Configure() {
Mapper.Initialize(
config => {
config.CreateMap<StateModel, StateDto>();
config.CreateMap<StateDto, StateModel>();
//can't do this as I do not have reference for State which is in MyApp.Model
//config.CreateMap<State, StateModel>();
//config.CreateMap<StateModel, State>();
});
}
}
Теперь мой вопрос заключается в том, как / где настроить сопоставления автоматического сопоставления для преобразования моих моделей Entity в модели предметной области?
Для этого на уровне API у меня нет ссылки на мой проект модели.Я считаю, что я должен сделать это на уровне обслуживания, но не уверен, как это сделать.Пожалуйста, помогите, как настроить это отображение.
Примечание: Перед тем, как спросить здесь, я погуглил всеми глазами
Где разместить карту AutoMapperрегистрация в ссылочной dll говорит об использовании статического конструктора, который я не считаю хорошим вариантом для добавления во все мои модели (у меня есть 100 моделей), а другой ответ говорит об использовании PreApplicationStartMethod, для которого я должен добавить ссылку на System.web.dll к моим услугам, что не правильно.
https://groups.google.com/forum/#!topic/automapper-users/TNgj9VHGjwg также не ответили на мой вопрос должным образом.