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 關注
- 282 瀏覽
添加回答
舉報
