自动化用于ef6列表值

时间:2017-01-20 09:41:13

标签: entity-framework automapper

public class TestEntity
{
  public string Name { get; set; }
}

public class Test
{
  public string name { get; set; }
}

List<TestEntity> testEntities;
List<Test> test;
testEntities= _db.testEntity.ToList();

如何使用AutoMapper使用EF6将值从testEntities映射到test

2 个答案:

答案 0 :(得分:1)

要使用Automapper,您需要安装Automapper。创建一个静态类并在应用程序启动方法中调用它。 (它的可选步骤,但出于维护目的,你应该有一个定义了所有映射的类,然后全局调用它然后你可以使用它。)

然后

public static class AutoMapperConfiguration
{
    public static void Configure()
    {
          Mapper.CreateMap<TestEntity, Test>().ReverseMap();
    }
}

然后    使用它

 AutoMapper.Mapper.Map<TestEntity, Test>(entity);

用于列表使用

   AutoMapper.Mapper.Map<List<TestEntity>,List< Test>>(entity);

如果您有不同的属性名称,那么您可以使用ForMember功能并单独映射它们。    例如

     Mapper.CreateMap<TestEntity, Test>()
     .ForMember(p => p.name, opt => 
      opt.MapFrom(src => src.Name));

,反之亦然。

答案 1 :(得分:0)

这是我的一个工作项目,也许这可以帮到你。我使用的是Automapper 5.2.0.0

以下情况仅用于映射两个不同的类

            var referenceInfo = service.GetReferenceNumber(criteria);

            var config = new MapperConfiguration(cfg => {
                cfg.CreateMap<ReferenceInfo, ReferenceInfoModel>();
            });

            var mapper = config.CreateMapper();
            var dest = mapper.Map<ReferenceInfo, ReferenceInfoModel>(referenceInfo);

如果你想从列表创建一个地图,或者在我的情况下IEnumerable,它应该像

        IEnumerable<ReferenceInfo> entityList = bizService.GetReferenceList();

        var config = new MapperConfiguration(cfg => {
            cfg.CreateMap<ReferenceInfo, ReferenceInfoModel>();
        });

        var mapper = config.CreateMapper();
        var dest = mapper.Map<IEnumerable<ReferenceInfo>, IEnumerable<ReferenceInfoModel>>(entityList);

希望这有帮助