Automapper с наследованием Entity Framework - PullRequest
1 голос
/ 21 апреля 2011

Я подозреваю, что есть некоторая простая конфигурация с AutoMapper, чтобы получить отображение, которое я хочу, но я понятия не имею. Кто-нибудь может указать мне правильное направление?

Вот моя ситуация:

Я определил наследование таблицы для каждого типа в Entity Framework с супертипом Publication и подтипом Article (+ 5 других подтипов)

ArticleAdmin - моя (MVC) модель представления, которая наследуется от модели представления PublicationAdmin.

Отображение модели представления в подтип домена работает нормально:

Mapper.CreateMap<ArticleAdmin, Article>();
var _Article = Mapper.Map<ArticleAdmin, Article>(article);;

И поэтому у меня нет проблем с добавлением статей.

Но идти другим путем не так уж и легко. Это не заполнит поля подтипа:

Mapper.CreateMap<Article, ArticleAdmin>();
var _Article = Mapper.Map<Article, ArticleAdmin>(_article_entity);

UPDATE

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

1 Ответ

1 голос
/ 21 апреля 2011

Боюсь, у меня недостаточно представителей для комментариев, чтобы запросить то, что вы ввели, так что извините, если это не так.

Соответствуют ли классы, которые вы пытаетесь отобразить, той же спецификации?

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

Mapper.CreateMap<Article, ArticleAdmin>()
.ForMember(dest => dest.DestProperty, opt => opt.MapFrom(src => src.SourceProperty))

Если это не так, возможно, вы могли бы опубликовать спецификацию класса, который вы хотите опубликовать, от> до.

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