我相信这是一个AutoMapper基础问题:
我有一个“文章”实体框架实体,我将其映射到视图模型以传递给视图进行编辑。这很好用:
Mapper.CreateMap<Article, ArticleAdmin>();
var articleData = Mapper.Map<Article, ArticleAdmin>(articleEntity);
现在,我的EF模型通过TopicArticles查找表包含与Topics表的多对多关系,我想在编辑文章数据时管理关联。
所以我将它添加到我的viewmodel:
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关于我的TopicArticle viewmodel类。
所以: 问题:
如何将映射更改为此额外图层的帐户?
(我真的不了解应该如何映射它的Automapper语法。)
另外:我错过了什么吗?
注意/更新:
我发布的代码中有一些错误,出现的任何“出版物”都是错误的,应该是“文章” - 这是因为我简化了一些情况:文章实际上来自出版物,但我我不希望这个问题的复杂性。
答案 0 :(得分:2)
好的,这真的是基本的。我的问题是没有进入实际的Automapper文档。谷歌搜索“automapper文档”将此链接作为最高响应:
http://automapper.codeplex.com/documentation
这是一个无用的TOC。
可以从主页访问真实文档。
我的问题的答案很简单: 首先,为了清楚起见,我更改了第二个viewmodel类的名称:
public class TopicArticleAdmin
然后回到我的行动中,我再添加一个映射行:
Mapper.CreateMap<Publication, ArticleAdmin>();
Mapper.CreateMap<TopicPublication, TopicPublicationAdmin>();
var articles = Mapper.Map<IEnumerable<Publication>, IEnumerable<ArticleAdmin>>(
articleEntities
);