首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有复杂EF实体的AutoMapper

具有复杂EF实体的AutoMapper
EN

Stack Overflow用户
提问于 2017-12-21 12:34:04
回答 1查看 240关注 0票数 1

我有一个包含几个FK引用的基本表。因此,当我为更新操作检索一个实体时,该实体包含相关实体的ICollections。我还有一个主viewModel,其中每个实体都是一个子ViewModel。我的目标是使用Automapper,例如:

代码语言:javascript
复制
mapper.Map(MainViewmodel obj,MainEntity obj); 

为此,我有一个MappingConfiguration,类似于:

代码语言:javascript
复制
 CreateMap<MainViewModel, MainEntity>();
 CreateMap<subViewModel1, subEntity1>();
 CreateMap<subViewModel2, subEntity2>();

这给了我一个未映射的属性异常,因为ICollections没有被映射。有人能告诉我处理这种情况的最佳方法吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 12:44:08

如果我没听错的话,你有这样的课:

代码语言:javascript
复制
class MainViewModel
{
    ICollection<SubViewModel1> SubViewModels { get;set; }
}

class SubViewModel1
{
}

代码语言:javascript
复制
class MainEntity
{
    ICollection<SubEntity1> SubEntities { get;set; }
}

class SubEntity1
{    
}

然后,您应该为每个类创建规则,并自动收集此类类的自动映射。

代码语言:javascript
复制
CreateMap<MainViewModel, MainEntity>();
CreateMap<SubViewModel1, SubEntity1>();

地址1:

  1. 试试这个方法:var mappedMainEntity = rmapper.Map<MainEntity>(MainViewmodel obj);
  2. 如果将MainEntity映射到MainViewModel,则需要添加.ReverseMap()来映射规则,如下所示: CreateMap().ReverseMap();CreateMap().ReverseMap();

加法2:

  1. 仅AutoMapper映射公共属性
  2. 如果映射属性有不同的名称,则需要使用显式指示如何映射这些属性。使用ForMember方法和MapFrom选项。示例
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47925111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档