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
?
答案 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);
希望这有帮助