2 回答
TA贡献1951条经验 获得超3个赞
假设_context.Vehicles.ToList()返回一个IList<Vehicle>,您可以执行以下操作:
[HttpGet]
public IEnumerable<VehicleDto> GetVehicles()
{
return Mapper.Map<IList<Vehicle>, List<VehicleDto>>(_context.Vehicles.ToList());
}
这还假设您已经使用以下内容配置了从Vehicle到的映射VehicleDto:
cfg.CreateMap<Vehicle, VehicleDto>();
或者,您可以使用 LINQ 的 select 运算符并执行以下操作来调用Map单个项目而不是整个集合:
[HttpGet]
public IEnumerable<VehicleDto> GetVehicles()
{
return _context.Vehicles.Select(v => Mapper.Map<Vehicle, VehicleDto>(v)).ToList();
}
更新: 切换Vehicle并VehicleDto反映 OP 在评论中显示的信息,表明他将数据存储Vehicle在数据库中,并且他的方法应返回VehicleDto.
TA贡献2080条经验 获得超4个赞
您之前是否定义了映射器类?
您在启动时加载类。
App_Start 文件夹。创建一个名为 MapModelEntity.cs 的类
public class MapModelEntity
{
public static void RegisterMapping()
{
Mapper.Initialize(config =>
{
config.CreateMap<StatusEntity, StatusTypeModel>().ReverseMap(); // For bothways
config.CreateMap<Vehicle, VehicleDto>() // For custom mapping
.ForMember(dest => dest.Prop1,
opts => opts.MapFrom(src => src.Prop1));
}
添加对 Global.asax 的引用
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
**MapModelEntity.RegisterMapping();**
}
在控制器中
var Result = _context.Vehicles.ToList();
var Mapped = Mapper.Map<VehicleDto>(Result);
- 2 回答
- 0 关注
- 238 浏览
添加回答
举报