具有复杂 EF 实体的 AutoMapper

AutoMapper with a complex EF Entity

我有一个基本的 table 和一些 FK 参考。因此,当我为更新操作检索实体时;该实体包含 ICollections 个相关实体。我还有一个主 ViewModel,其中每个实体都是一个子 ViewModel。我的目标是像这样使用 Automapper:

mapper.Map(MainViewmodel obj,MainEntity obj); 

为此,我有一个 MappingConfiguration,例如:

 CreateMap<MainViewModel, MainEntity>();
 CreateMap<subViewModel1, subEntity1>();
 CreateMap<subViewModel2, subEntity2>();

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

谢谢。

如果我没理解错的话,你 class 是这样的:

class MainViewModel
{
    ICollection<SubViewModel1> SubViewModels { get;set; }
}

class SubViewModel1
{
}

class MainEntity
{
    ICollection<SubEntity1> SubEntities { get;set; }
}

class SubEntity1
{    
}

然后您应该为每个 class 创建规则,并自动收集此类 classes automaper 地图。

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 映射public 仅限属性
  2. 如果映射属性有不同的名称,您需要使用明确指示如何映射这些属性。使用 ForMember 方法和 MapFrom 选项。 Example