Automapper - отображение множества поисков из Entity Framework в viewmodel - PullRequest
1 голос
/ 03 мая 2011

Я полагаю, что это базовый вопрос AutoMapper:

У меня есть одна сущность Entity Framework "article", которую я сопоставляю с моделью представления для передачи в представление для редактирования.Это прекрасно работает:

Mapper.CreateMap<Article, ArticleAdmin>();
var articleData = Mapper.Map<Article, ArticleAdmin>(articleEntity);

Теперь моя модель EF включает в себя отношение «многие ко многим» с таблицей «Темы» через таблицу поиска TopicArticles, и я хочу управлять ассоциациями при редактировании данных статьи.

Поэтому я добавляю это к моей модели представления:

public ICollection<TopicArticle> TopicArticles { get; set; } 

Я считаю, что это правильная спецификация для отражения типа сущности - моя модель EF имеет член ассоциации TopicArticles в виде EntityCollection.

и я добавляю второй класс viewmodel для заполнения списка:

public class TopicArticle
{
    public int ArticleId { get; set; }
    public int TopicId { get; set; }
    public bool IsPrimaryTopic { get; set; }
}

Когда я запускаю отображение, я получаю «Отсутствует конфигурация карты типов или неподдерживаемое отображение».И это понятно, поскольку я не рассказал Automapper о своем классе viewMode для темы TopicArticle.

Итак: ВОПРОС:

Как я могу изменить свое отображение, чтобы учесть этот дополнительный слой?

(Я не совсем понимаю синтаксис Automapper для того, как это должно отображаться.)

Также: я пропустил что-нибудь еще?

ПРИМЕЧАНИЕ / ОБНОВЛЕНИЕ:

Были некоторые ошибки в моем опубликованном коде, любая «публикация», которая появилась, была неправильной, и должна была быть «статьей» - это потому, что я немного упрощаю ситуацию: статьи на самом деле унаследованы от публикаций, ноЯ не хотел такой сложности в этом вопросе.

1 Ответ

2 голосов
/ 03 мая 2011

ОК, это действительно просто.Моя проблема не была связана с документацией AutomapperГугл "Документация автопроизводителя" получает эту ссылку в качестве главного ответа:

http://automapper.codeplex.com/documentation

, который является бесполезным оглавлением.

Реальная документация доступна с домашней страницы.

Ответ на мой вопрос прост: во-первых, я для ясности поменяю имя своего второго класса viewmodel:

public class TopicArticleAdmin

Затем вернемся к своему действию и добавлю еще одну строку сопоставления:

Mapper.CreateMap<Publication, ArticleAdmin>();
Mapper.CreateMap<TopicPublication, TopicPublicationAdmin>();
var articles = Mapper.Map<IEnumerable<Publication>, IEnumerable<ArticleAdmin>>(
    articleEntities
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...